Sensor for detecting glare conditions

ABSTRACT

A sensor and/or system controller may process an image multiple times at multiple resolutions to detect glare conditions. A glare condition threshold used to determine whether a glare condition exists may be based on the resolution of the image. When the resolution of the image is higher, the glare condition threshold may be higher. The sensor and/or system controller may organize one or more adjacent pixels having similar intensities into pixel groups. The pixel groups may vary in size and/or shape. The sensor and/or system controller may determine a representative group luminance for the pixel group (e.g., an average luminance of the pixels in the group). The sensor and/or system controller may determine a group glare condition threshold, which may be used to determine whether a glare condition exists for the group of pixels and/or may be based on the size of the group.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Patent Application No. 63/119,274, filed Nov. 30, 2020, which is hereby incorporated by reference in its entirety

BACKGROUND

A user environment, such as a residence or an office building, for example, may be configured using various types of load control systems. A lighting control system may be used to control the lighting loads providing artificial light in the user environment. A motorized window treatment control system may be used to control the natural light provided to the user environment. An HVAC system may be used to control the temperature in the user environment.

Each load control system may include various control devices, including input devices and load control devices. The load control devices may receive messages, which may include load control instructions, for controlling an electrical load from one or more of the input devices. The load control devices may be capable of directly controlling an electrical load. The input devices may be capable of indirectly controlling the electrical load via the load control device.

Examples of load control devices may include lighting control devices (e.g., a dimmer switch, an electronic switch, a ballast, or a light-emitting diode (LED) driver), a motorized window treatment, a temperature control device (e.g., a thermostat), an AC plug-in load control device, and/or the like. Examples of input devices may include remote control devices, occupancy sensors, daylight sensors, glare sensors, color temperature sensors, temperature sensors, and/or the like. Remote control devices may receive user input for performing load control. Occupancy sensors may include infrared (IR) sensors for detecting occupancy/vacancy of a space (e.g., an area) based on movement of the users. Daylight sensors may detect a daylight level received within a space. Color temperature sensor determines the color temperature within a user environment based on the wavelengths and/or frequencies of light. Temperature sensors may detect the current temperature of the space. Window sensors (e.g., glare sensors) may be positioned facing outside of a building (e.g., on a window or exterior of a building) to measure the total amount of natural light detected outside the building and/or detect glare conditions.

Some prior art load control systems have controlled motorized window treatments to prevent glare conditions inside of the building (e.g., glare conditions caused by direct sunlight shining into the building). The load control system may include a system controller for determining positions to which to control shade fabric of the motorized window treatments to prevent glare conditions based on the predicted location of the sun (e.g., using the present time of the day and year, the location and/or orientation of the building, etc.). The load control system may automatically control the motorized window treatments throughout the day according to the estimated positions of the sun. The load control system may also include window sensors that are configured to detect low light conditions (e.g., on cloudy days) and/or high light conditions (e.g., on extremely bright days) to enable the system controller to override the automatic control of the motorized window treatments on cloudy days and bright days. However, such load control systems require complicated configuration procedure and advanced system controller to operate appropriately. These systems are also performing estimation of daylight glare based on known conditions (e.g., the present time of the day and year, the location and/or orientation of the building, etc.) and/or a total amount of daylight sensed at the location of a given sensor. Examples of such a load control system is described in commonly-assigned U.S. Pat. No. 8,288,981, issued Oct. 16, 2012, entitled METHOD OF AUTOMATICALLY CONTROLLING A MOTORIZED WINDOW TREATMENT WHILE MINIMIZING OCCUPANT DISTRACTIONS, the entire disclosure of which is hereby incorporated by reference.

SUMMARY

A sensor (e.g., a visible light sensor) and/or a system controller may process an image to determine the position of a glare source and control motorized window treatments to prevent the glare source from affecting an occupant of a room. The sensor and/or a system controller may process the pixels of the image to determine whether a glare condition exists. The sensor and/or system controller may compare the luminance of the pixels in the image to a glare condition threshold to determine whether a glare condition exists. For example, if the luminance of the pixel is greater than the glare condition threshold, the sensor and/or system controller may determine that a glare condition exists.

The visible light sensor may process the image to account for small high-intensity glare conditions. For example, the visible light sensor may reduce the resolution of the image and/or group adjacent pixels having similar intensities into pixel groups. The sensor and/or system controller may process the image multiple times at multiple resolutions. The glare condition threshold used to determine whether a glare condition exists may be based on the resolution of the image. For example, when the resolution of the image is higher, the glare condition threshold may be higher. Similarly, when the resolution of the image is lower, the threshold may be lower.

The sensor and/or system controller may organize one or more adjacent pixels to form pixel groups. For example, the sensor and/or system controller may group pixels having similar intensities. The pixel groups may vary in size. The sensor and/or system controller may determine a representative group luminance, which may be a value that represents the luminance values of the pixels in the group. For example, the representative luminance value may be an average luminance of the pixels in the group. The sensor and/or system controller may determine a group glare condition threshold, which may be used to determine whether a glare condition exists for the group of pixels. For example, the sensor and/or system controller may determine the group glare condition threshold based on the size of the group. For example, a large pixel group may have a large group glare detection threshold.

After determining that a glare condition exists, the sensor and/or system controller may determine a profile angle for the glare source. The sensor and/or system controller may use the profile angle to identify the position to which a shade level may be controlled at one or more motorized window treatments to prevent the glare condition from affecting the occupant of the room. After identifying the position to which the shade level may be controlled, the sensor and/or system controller may determine whether to raise or lower the shade level, for example based on an amount by which the shade level is to be raised or lowered (e.g., a difference between a desired shade level and a present level). If the shade level is to be raised, the sensor and/or system controller may determine whether a raise delay period has passed since the shade level was last raised (e.g., using a raise timer).

As described herein, a sensor for detecting glare may comprise a visible light sensing circuit configured to record one or more images, and a control circuit configured to calculate a respective luminance of multiple pixels of an image (e.g., a non-warped image) and detect a glare condition in response to the luminance of at least one of the pixels. While calculating the respective luminance of each of the multiple pixels, the control circuit may be configured to start at a first pixel on a bottom row of pixels of the non-warped image and step through each of the multiple pixels on the bottom row before stepping up to a next row of pixels immediately above the bottom row. When the control circuit detects the glare condition, the control circuit may cease processing the non-warped image by not calculating the respective luminance of each of the remaining pixels of the non-warped image.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an example load control system having a visible light sensor.

FIG. 2 is a side view of an example space having a visible light sensor.

FIG. 3 is a block diagram of an example visible light sensor.

FIG. 4A shows an example of a warped image.

FIG. 4B shows an example of a non-warped image.

FIG. 4C shows an example of a warped image illustrating a region of interest.

FIG. 4D shows an example of a non-warped image illustrating a region of interest.

FIG. 5A is a sequence diagram of an example glare detection procedure that may be executed by a visible light sensor and a motorized window treatment.

FIG. 5B is a sequence diagram of an example glare detection procedure that may be executed by a visible light sensor, a system controller, and a motorized window treatment.

FIGS. 6A and 6B are examples of non-warped images used for glare detection.

FIG. 7 is a flowchart of an example glare prevention procedure.

FIGS. 8-10 are flowcharts of example glare detection procedures.

FIG. 10 is a block diagram of an example system controller.

FIG. 11 is an example flowchart of a procedure that may be used to adjust a position of a motorized window treatment based on one or more thresholds.

FIG. 12 is an example flowchart of a procedure that may be used to adjust a position of a motorized window treatment based on a timer.

FIG. 13A is another example flowchart of a procedure that may be used to adjust a position of a motorized window treatment based on a timer.

FIG. 13B is an example flowchart of a procedure that may be used to determine whether to transmit a stored command to adjust a position of a motorized window treatment based a vacancy condition of the area in which the motorized window treatment is located.

FIG. 14 is an example flowchart of a procedure that may be used to adjust a position of a motorized window treatment based on one or more thresholds and a timer.

FIG. 15 is another example flowchart of a procedure that may be used to adjust a position of a motorized window treatment based on one or more thresholds, a timer, and a vacancy condition of an area in which the motorized window treatment is located.

FIG. 16 is a block diagram illustrating an example of a device capable of processing and/or communication in the load control system of FIG. 1A.

FIG. 17 is a block diagram illustrating an example load control device.

DETAILED DESCRIPTION

FIG. 1 is a diagram of an example load control system 100 for controlling the amount of power delivered from an alternating-current (AC) power source (not shown) to one or more electrical loads. The load control system 100 may be installed in a load control environment 102. The load control environment 102 may include a space in a residential or commercial building. For example, the load control system 100 may be installed in one or more rooms on one or more floors in the building.

The load control system 100 may comprise a plurality of control devices. The control devices may include load control devices that are configured to control one or more electrical loads in the load control environment 102 (also referred to as a user environment). For example, the load control devices may control the one or more electrical loads in response to input from one or more input devices or other devices in the load control system 100.

The load control devices in the load control system 100 may include lighting control devices. For example, the load control system 100 may include lighting control devices 120 for controlling lighting loads 122 in a corresponding lighting fixture 124. The lighting control devices 120 may comprise light-emitting diode (LED) drivers and the lighting loads 122 may comprise LED light sources. While each lighting fixture 124 is shown having a single lighting load 122, each lighting fixture may comprise one or more individual light sources (e.g., lamps and/or LED emitters) that may be controlled individually and/or in unison by the respective lighting control device. Though an LED driver is provided as an example lighting control device, other types of lighting control devices may be implemented as load control devices in the load control system 100. For example, the load control system 100 may comprise dimmer switches, electronic dimming ballasts for controlling fluorescent lamps, or other lighting control devices for controlling corresponding lighting loads. The lighting control device 120 may be configured to directly control an amount of power provided to the lighting load 122. The lighting control device 120 may be configured to receive (e.g., via wired or wireless communications) messages via radio-frequency (RF) signals 108, 109 and to control the lighting load 122 in response to the received messages. One will recognize that lighting control device 120 and lighting load 122 may be integral and thus part of the same fixture or bulb, for example, or may be separate.

The load control devices in the load control system 100 may comprise one or more appliances that are able to receive the RF signals 108 (e.g., wireless signals) for performing load control. In an example, the load control system may include a speaker 146 (e.g., part of an audio/visual or intercom system), which is able to generate audible sounds, such as alarms, music, intercom functionality, etc. in response to RF signals 108.

The load control devices in the load control system 100 may comprise one or more daylight control devices, e.g., motorized window treatments 150, such as motorized cellular shades, for controlling the amount of daylight entering the load control environment 102. Each motorized window treatment 150 may comprise a window treatment fabric 152 hanging from a headrail 154 in front of a respective window 104. Each motorized window treatment 150 may further comprise a motor drive unit (not shown) located inside of the headrail 154 for raising and lowering the window treatment fabric 152 for controlling the amount of daylight entering the load control environment 102. The motor drive units of the motorized window treatments 150 may be configured to receive messages via the RF signals 108 and adjust the position of the respective window treatment fabric 152 in response to the received messages. For example, the motorized window treatments may be battery-powered. The load control system 100 may comprise other types of daylight control devices, such as, for example, a cellular shade, a drapery, a Roman shade, a Venetian blind, a Persian blind, a pleated blind, a tensioned roller shade system, an electrochromic or smart window, and/or other suitable daylight control device. Examples of battery-powered motorized window treatments are described in greater detail in U.S. Pat. No. 8,950,461, issued Feb. 10, 2015, entitled MOTORIZED WINDOW TREATMENT, and U.S. Pat. No. 9,488,000, issued Nov. 8, 2016, entitled INTEGRATED ACCESSIBLE BATTERY COMPARTMENT FOR MOTORIZED WINDOW TREATMENT, the entire disclosures of which are hereby incorporated by reference.

The load control devices in the load control system 100 may comprise a plug-in load control device 140 for controlling a plug-in electrical load, e.g., a plug-in lighting load (such as a floor lamp 142 or a table lamp) and/or an appliance (such as a television or a computer monitor). For example, the floor lamp 142 may be plugged into the plug-in load control device 140. The plug-in load control device 140 may be plugged into a standard electrical outlet 144 and thus may be coupled in series between the AC power source and the plug-in lighting load. The plug-in load control device 140 may be configured to receive messages via the RF signals 108 and to turn on and off or adjust the intensity of the floor lamp 142 in response to the received messages.

The load control devices in the load control system 100 may comprise one or more temperature control devices, e.g., a thermostat 160 for controlling a room temperature in the load control environment 102. The thermostat 160 may be coupled to a heating, ventilation, and air conditioning (HVAC) system 162 via a control link 161 (e.g., an analog control link or a wired digital communication link). The thermostat 160 may be configured to wirelessly communicate messages with a controller of the HVAC system 162. The thermostat 160 may comprise a temperature sensor for measuring the room temperature of the load control environment 102 and may control the HVAC system 162 to adjust the temperature in the room to a setpoint temperature. The load control system 100 may comprise one or more wireless temperature sensors (not shown) located in the load control environment 102 for measuring the room temperatures. The HVAC system 162 may be configured to turn a compressor on and off for cooling the load control environment 102 and to turn a heating source on and off for heating the rooms in response to the control signals received from the thermostat 160. The HVAC system 162 may be configured to turn a fan of the HVAC system on and off in response to the control signals received from the thermostat 160. The thermostat 160 and/or the HVAC system 162 may be configured to control one or more controllable dampers to control the air flow in the load control environment 102. The thermostat 160 may be configured to receive messages via the RF signals 108 and adjust heating, ventilation, and cooling in response to the received messages.

The load control system 100 may comprise one or more other types of load control devices, such as, for example, a screw-in luminaire including a dimmer circuit and an incandescent or halogen lamp; a screw-in luminaire including a ballast and a compact fluorescent lamp; a screw-in luminaire including an LED driver and an LED light source; an electronic switch, controllable circuit breaker, or other switching device for turning an appliance on and off; a controllable electrical receptacle, or controllable power strip for controlling one or more plug-in loads; a motor control unit for controlling a motor load, such as a ceiling fan or an exhaust fan; a drive unit for controlling a projection screen; motorized interior or exterior shutters; a thermostat for a heating and/or cooling system; a temperature control device for controlling a setpoint temperature of an HVAC system; an air conditioner; a compressor; an electric baseboard heater controller; a controllable damper; a variable air volume controller; a fresh air intake controller; a ventilation controller; a hydraulic valves for use radiators and radiant heating system; a humidity control unit; a humidifier; a dehumidifier; a water heater; a boiler controller; a pool pump; a refrigerator; a freezer; a television or computer monitor; a video camera; an audio system or amplifier; an elevator; a power supply; a generator; an electric charger, such as an electric vehicle charger; and/or an alternative energy controller.

The load control system 100 may comprise one or more input devices capable of receiving an input event for controlling one or more load control devices in the load control system 100. The input devices and the load control devices may be collectively referred to as control devices in the load control system 100. The input devices in the load control system 100 may comprise one or more remote control devices, such as a remote control device 170. The remote control device may be battery-powered. The remote control device 170 may be configured to transmit messages via RF signals 108 to one or more other devices in the load control system 100 in response to an input event, such as an actuation of one or more buttons or a rotation of a rotary knob of the remote control device 170. For example, the remote control device 170 may transmit messages to the lighting control device 120, the plug-in load control device 140, the motorized window treatments 150, and/or the temperature control device 160 via the RF signals 108 in response to actuation of one or more buttons located thereon. The remote control device 170 may also communicate with other devices in the load control system 100 via a wired communication link. In response to an input event at the remote control device 170, a devices to which the remote control device 170 is wired may be triggered to transmit messages to one or more other devices in the load control system 100. The remote control device 170 may comprise a keypad. In another example, the remote control device 170 may comprise a rotary knob configured to transmit messages to one or more other devices in response to a rotation on the rotary knob (e.g., rotation of a predefined distance or for a predefined period of time). The remote control device 170 may be mounted to a structure, such as a wall, a toggle actuator of a mechanical switch, or a pedestal to be located on a horizontal surface. In another example, the remote control device 170 may be handheld.

The remote control device 170 may provide feedback (e.g., visual feedback) to a user of the remote control device 170 on a visual indicator, such as a status indicator. The status indicator may be illuminated by one or more light emitting diodes (LEDs) for providing feedback. The status indicator may provide different types of feedback. The feedback may include feedback indicating actuations by a user or other user interface event, a status of electrical loads being controlled by the remote control device 170, and/or a status of the load control devices being controlled by the remote control device 170. The feedback may be displayed in response to user interface event and/or in response to messages received that indicate the status of load control devices and/or electrical loads. Examples of battery-powered remote control devices are described in greater detail in commonly-assigned U.S. Pat. No. 8,330,638, issued Dec. 11, 2012, entitled WIRELESS BATTERY-POWERED REMOTE CONTROL HAVING MULTIPLE MOUNTING MEANS, and U.S. Patent Application Publication No. 2012/0286940, published Nov. 15, 2012, entitled CONTROL DEVICE HAVING A NIGHTLIGHT, the entire disclosures of which are hereby incorporated by reference.

The load control system 100 may comprise other types of input devices, such as, for example, visible light sensors, temperature sensors, humidity sensors, radiometers, cloudy-day sensors, shadow sensors, pressure sensors, smoke detectors, carbon monoxide detectors, air-quality sensors, motion sensors, security sensors, proximity sensors, fixture sensors, partition sensors, keypads, multi-zone control units, slider control units, kinetic or solar-powered remote controls, key fobs, cell phones, smart phones, tablets, personal digital assistants, personal computers, laptops, timeclocks, audio-visual controls, safety devices, power monitoring devices (e.g., such as power meters, energy meters, utility submeters, utility rate meters, etc.), central control transmitters, residential, commercial, or industrial controllers, and/or any combination thereof.

The input devices and the load control devices may be configured to communicate messages between one another on a communication link within the load control system 100. The communication link between control devices in the load control system may comprise one or more network communication links through which messages may be transmitted for performing end-to-end communications in the load control system 100. For example, the input devices and the load control devices may be capable of communicating messages directly to one another via the RF signals 108. The RF signals 108 may be transmitted using a proprietary RF protocol, such as the CLEAR CONNECT protocol (e.g., CLEAR CONNECT TYPE A and/or CLEAR CONNECT TYPE X protocols). Alternatively, the RF signals 108 may be transmitted using a different RF protocol, such as, a standard protocol, for example, one of WIFI, cellular (e.g., 3G, 4G LTE, 5G NR, or other cellular protocol), BLUETOOTH, BLUETOOTH LOW ENERGY (BLE), ZIGBEE, Z-WAVE, THREAD, KNX-RF, ENOCEAN RADIO protocols, or a different protocol. In an example, the input devices may transmit messages to the load control devices via the RF signals 108 that comprise input events (e.g., button presses, sensor measurement events, or other input event) or control instructions generated in response to the input events for performing control of the electrical loads controlled by the load control devices. Though communication links may be described as a wireless communication links, wired communication links may similarly be implemented for enabling communications herein.

For devices in the load control system 100 to recognize messages directed to the device and/or to which to be responsive, the devices may be associated with one another by performing an association procedure. For example, for a load control device to be responsive to messages from an input device, the input device may first be associated with the load control device. As one example of an association procedure, devices may be put in an association mode for sharing a unique identifier for being associated with and/or stored at other devices in the load control system 100. For example, an input device and a load control device may be put in an association mode by the user 192 actuating a button on the input device and/or the load control device. The actuation of the button on the input device and/or the load control device may place the input device and/or the load control device in the association mode for being associated with one another. In the association mode, the input device may transmit an association message(s) to the load control device (directly or through one or more other devices as described herein). The association message from the input device may include a unique identifier of the input device. The load control device may locally store the unique identifier of the input device in association information, such that the load control device may be capable of recognizing messages (e.g., subsequent messages) from the input device that may include load control instructions or commands. The association information stored at the load control device may include the unique identifiers of the devices with which the load control device is associated. The load control device may be configured to respond to the messages from the associated input device by controlling a corresponding electrical load according to the load control instructions received in the messages. The input device may also store the unique identifier of the load control device with which it is being associated in association information stored locally thereon. A similar association procedure may be performed between other devices in the load control system 100 to enable each device to perform communication of messages with associated devices. This is merely one example of how devices may communicate and be associated with one another and other examples are possible.

According to another example, one or more devices may receive system configuration data (e.g., or subsequent updates to the system configuration data) that is uploaded to the devices and that specifies the association information comprising the unique identifiers of the devices for being associated. The system configuration data may comprise a load control dataset that defines the devices and operational settings of the load control system 100. The system configuration data may include information about the devices in the user environment 102 and/or the load control system 100. The system configuration data may include association information that indicates defined associations between devices in the load control system 100. The association information may be updated using any of the association procedures described herein.

One or more intermediary devices may also maintain association information that includes the unique identifiers that make up the associations of other devices in the load control system 100. For example, the input devices and the load control devices may communicate on a communication link in the load control system 100 through one or more other intermediary devices, such as router devices or other devices in a network. The intermediary devices may comprise input devices, load control devices, a central processing device, or another intermediary device capable of enabling communication between devices in the load control system. The association information that is maintained on the intermediary devices may comprise the unique identifiers of the devices that are associated with one another for identifying and/or enabling communication of messages between devices in the load control system 100. For example, an intermediary device may identify the unique identifiers being transmitted in association messages between devices during the association procedure and store the unique identifiers of the devices as an association in the association information. The intermediary devices may use the association information for monitoring and/or routing communications on a communication link between devices in the load control system 100. In another example, the association information of other devices may be uploaded to the intermediary device and/or communicated from the intermediary device to the other devices for being locally stored thereon (e.g., at the input devices and/or load control devices).

The load control system 100 may comprise a system controller 110. The system controller 100 may operate as an intermediary device, as described herein. For example, the system controller 110 may operate as a central processing device for one or more other devices in the load control system 100. The system controller 110 may operable to communicate messages to and from the control devices (e.g., the input devices and the load control devices). For example, the system controller 110 may be configured to receive messages from the input devices and transmit messages to the load control devices in response to the messages received from the input devices. The system controller 110 may route the messages based on the association information stored thereon. The input devices, the load control devices, and the system controller 110 may be configured to transmit and receive the RF signals 108 and/or over a wired communication link. The system controller 110 may be coupled to one or more networks, such as a wireless or wired local area network (LAN), e.g., for access to the Internet. The system controller 110 may be wirelessly connected to the networks using one or more wireless protocols. The system controller 110 may be coupled to the networks via a wired communication link, such as a network communication bus (e.g., an Ethernet communication link).

The system controller 110 may be configured to communicate via the network with one or more computing devices, e.g., a mobile device 190, such as, a personal computing device and/or a wearable wireless device. The mobile device 190 may be located on an occupant 192, for example, may be attached to the occupant's body or clothing or may be held by the occupant. The mobile device 190 may be characterized by a unique identifier (e.g., a serial number or address stored in memory) that uniquely identifies the mobile device 190 and thus the occupant 192. Examples of personal computing devices may include a smart phone, a laptop, and/or a tablet device. Examples of wearable wireless devices may include an activity tracking device, a smart watch, smart clothing, and/or smart glasses. In addition, the system controller 110 may be configured to communicate via the network with one or more other control systems (e.g., a building management system, a security system, etc.).

The mobile device 190 may be configured to transmit messages to the system controller 110, for example, in one or more Internet Protocol packets. For example, the mobile device 190 may be configured to transmit messages to the system controller 110 over the LAN and/or via the Internet. The mobile device 190 may be configured to transmit messages over the Internet to an external service, and then the messages may be received by the system controller 110. The mobile device 190 may transmit and receive RF signals 109. The RF signals 109 may be the same signal type and/or transmitted using the same protocol as the RF signals 108. Alternatively or additionally, the mobile device 190 may be configured to transmit RF signals according to another signal type and/or protocol.

The load control system 100 may comprise other types of computing devices coupled to the network, such as a desktop personal computer (PC), a wireless-communication-capable television, or any other suitable Internet-Protocol-enabled device. Examples of load control systems operable to communicate with mobile and/or computing devices on a network are described in greater detail in commonly-assigned U.S. Patent Application Publication No. 2013/0030589, published Jan. 31, 2013, entitled LOAD CONTROL DEVICE HAVING INTERNET CONNECTIVITY, the entire disclosure of which is hereby incorporated by reference.

The load control system 100 may comprise one or more input devices, e.g., such as a remote control device 170, a first visible light sensor 180 (e.g., a room sensor), and a second visible light sensor 182 (e.g., a window sensor). The input devices may be fixed or movable input devices. The system controller 110 may be configured to transmit one or more messages to the load control devices (e.g., the dimmer switch 120, the LED driver 130, the plug-in load control device 140, the motorized window treatments 150, and/or the thermostat 160) in response to the messages received from the remote control device 170 and the visible light sensors 180, 182. The remote control device 170 and the visible light sensors 180, 182 may be configured to transmit messages directly to the dimmer switch 120, the LED driver 130, the plug-in load control device 140, the motorized window treatments 150, and the temperature control device 160. Examples of visible light sensors having multiple sensor modes are described in greater detail in commonly-assigned U.S. Patent Application Publication No. 2017/0171941, published Jun. 15, 2017, and U.S. Patent Application Publication No. 2018/0168019, published Jun. 14, 2018, both entitled LOAD CONTROL SYSTEM HAVING A VISIBLE LIGHT SENSOR, the entire disclosures of which are hereby incorporated by reference.

The first visible light sensor 180 may be configured to operate in the occupancy and/or vacancy sensor mode to determine an occupancy and/or vacancy condition in the room 102 in response to detection of movement within one or more regions of interest. The first visible light sensor 180 may be configured to use an occupancy and/or vacancy detection algorithm to determine that the room 102 is occupied in response to the amount of movement and/or the velocity of movement exceeding an occupancy threshold.

During a sensor event for detecting occupancy and/or vacancy, the first visible light sensor 180 may be configured to apply a predetermined mask to focus on one or more regions of interest in one or more images recorded by the camera and determine occupancy or vacancy of the space based on detecting or not detecting motion in the regions of interest. The first visible light sensor 180 may be responsive to movement in the regions of interest and not be responsive to movement in the masked-out areas. For example, the first visible light sensor 180 may be configured to apply a mask to an image of the room to exclude detection of motion in the doorway 181 and/or the windows 104 of the room 102, and may focus on a region of interest that includes the interior space of the room. The first visible light sensor 180 may be configured to apply a first mask to focus on a first region of interest, apply a second mask to focus on a second region of interest, and determine occupancy or vacancy based on movement detected in either of the regions of interest. In addition, the first visible light sensor 180 may be configured to focus on multiple regions of interest in the image at the same time by applying different masks to the image(s).

The first visible light sensor 180 may be configured to adjust certain operational characteristics (e.g., sensitivity) to be used by the occupancy and/or vacancy algorithm depending upon the present sensor event. The occupancy threshold may be dependent upon the sensitivity. For example, the first visible light sensor 180 may be configured to be more sensitive or less sensitive to movements in a first region of interest than in a second region of interest. For example, the first visible light sensor 180 may be configured to increase the sensitivity and apply a mask to focus on a region of interest around a keyboard of a computer to be more sensitive to movements around the keyboard. In other words, by using masks that focus on “smaller” vs “larger” areas (e.g., the keyboard vs. the desk surface on which the keyboard may sit), the first visible light sensor 180 may be configured to increase and/or decrease the sensitivity of detected or not detected movements. In addition, through the use of masks, the first visible light sensor 180 may be configured to detect movement in the space, and detect where that movement occurred.

The first visible light sensor 180 may transmit messages to the system controller 110 via the RF signals 108 (e.g., using the proprietary protocol) in response to detecting the occupancy or vacancy conditions. The system controller 110 may be configured to turn the lighting loads (e.g., lighting load 122 and/or the LED light source 132) on and off in response to receiving an occupied command and a vacant command, respectively. Alternatively, the first visible light sensor 180 may transmit messages directly to the lighting loads. The first visible light sensor 180 may operate as a vacancy sensor, such that the lighting loads are only turned off in response to detecting a vacancy condition (e.g., and not turned on in response to detecting an occupancy condition). Examples of RF load control systems having occupancy and vacancy sensors are described in greater detail in commonly-assigned U.S. Pat. No. 8,009,042, issued Aug. 30, 2011 Sep. 3, 2008, entitled RADIO-FREQUENCY LIGHTING CONTROL SYSTEM WITH OCCUPANCY SENSING; U.S. Pat. No. 8,199,010, issued Jun. 12, 2012, entitled METHOD AND APPARATUS FOR CONFIGURING A WIRELESS SENSOR; and U.S. Pat. No. 8,228,184, issued Jul. 24, 2012, entitled BATTERY-POWERED OCCUPANCY SENSOR, the entire disclosures of which are hereby incorporated by reference.

The first visible light sensor 180 may also be configured to operate in the daylight sensor mode to measure a light intensity at a location of the space. For example, the first visible light sensor 180 may apply a digital mask to focus on only a specific location in the space (e.g., on a task surface, such as a table 106 as shown in FIG. 1) and may use a daylighting algorithm to measure the light intensity at the location. For example, the first visible light sensor 180 may be configured to apply a mask to focus on a region of interest that includes the surface of a desk. The first visible light sensor 180 may be configured to integrate light intensities values of the pixels of the image across the region of interest to determine a measured light intensity at the surface of the desk.

The first visible light sensor 180 may transmit messages (e.g., including the measured light intensity) to the system controller 110 via the RF signals 108 for controlling the intensities of the lighting load 122 and/or the LED light source 132 in response to the measured light intensity. The first visible light sensor 180 may be configured to focus on multiple regions of interest in the image recorded by the camera and measure the light intensity in each of the different regions of interest. Alternatively, the first visible light sensor 180 may transmit messages directly to the lighting loads. The first visible light sensor 180 may be configured to adjust certain operational characteristics (e.g., gain) based on the region of interest in which the light intensity is presently being measured. Examples of RF load control systems having daylight sensors are described in greater detail in commonly-assigned U.S. Pat. No. 8,410,706, issued Apr. 2, 2013, entitled METHOD OF CALIBRATING A DAYLIGHT SENSOR; and U.S. Pat. No. 8,451,116, issued May 28, 2013, entitled WIRELESS BATTERY-POWERED DAYLIGHT SENSOR, the entire disclosures of which are hereby incorporated by reference.

The system controller 110 may be configured to determine a degradation in the light output of one or more of the lighting loads (e.g., the lighting load 122 and/or the LED light source 132) in the space, and to control the intensities of the lighting loads to compensate for the degradation (e.g., lumen maintenance). For example, the system controller 110 may be configured to individually turn on each lighting load (e.g., when it is dark at night) and measure the magnitude of the light intensity at a location (e.g., on the table 106 or the desk 220). For example, the system controller 110 may be configured to turn on the lighting load 122 at night and control the first visible light sensor 180 to record an image of the room, to apply a mask to focus on a region of interest that the lighting load 122 illuminates (e.g., the surface of table 106 or the desk 220), to measure the light intensity in that region of interest, and to communicate that value to the system controller 110. The system controller 110 may store this value as a baseline value. At a time and/or date thereafter, the system controller 110 may repeat the measurement and compare the measurement to the baseline value. If the system controller 110 determines there to be a degradation, it may control the lighting load 122 to compensate for the degradation, alert maintenance, etc.

The first visible light sensor 180 may also be configured to operate in the color sensor mode to sense a color (e.g., measure a color temperature) of the light emitted by one or more of the lighting loads in the space (e.g., to operate as a color sensor and/or a color temperature sensor). For example, the first visible light sensor 180 may be configured to apply a mask to focus on a region of interest in the room 102 and may use a color sensing algorithm to determine a measured color and/or color temperature in the room. For example, the first visible light sensor 180 may integrate color values of the pixels of the image across the region of interest to determine the measured color and/or color temperature in the room. The first visible light sensor 180 may transmit messages (e.g., including the measured color temperature) to the system controller 110 via the RF signals 108 for controlling the color (e.g., the color temperatures) of the lighting load 122 and/or the LED light source 132 in response to the measured light intensity (e.g., color tuning of the light in the space). Alternatively, the first visible light sensor 180 may transmit messages directly to the lighting loads. An example of a load control system for controlling the color temperatures of one or more lighting loads is described in greater detail in commonly-assigned U.S. Pat. No. 9,538,603, issued Jan. 3, 2017, entitled SYSTEMS AND METHODS FOR CONTROLLING COLOR TEMPERATURE, the entire disclosure of which is hereby incorporated by reference.

The first visible light sensor 180 may be configured to operate in a glare detection sensor mode. For example, the first visible light sensor 180 may be configured execute a glare detection algorithm to determine a depth of direct sunlight penetration into the space from the image recorded by the camera. For example, the first visible light sensor 180 may be configured to apply a mask to focus on a region of interest on the floor of the room 102 near the windows 104 to sense the depth of direct sunlight penetration into the room. Based on a detection and/or measurement of the depth of direct sunlight penetration into the room, the first visible light sensor 180 may transmit messages to the system controller 110 via the RF signals 108 to limit the depth of direct sunlight penetration into the space, for example, to prevent direct sunlight from shining on a surface (e.g., a table or a desk). The system controller 110 may be configured to lower the window treatment fabric 152 of each of the motorized window treatments 150 to prevent the depth of direct sunlight penetration from exceeded a maximum sunlight penetration depth. Alternatively, the first visible light sensor 180 may be configured to directly control the window treatments 150 to lower of the window treatment fabric 152. Examples of methods for limiting the sunlight penetration depth in a space are described in greater detail in previously-referenced U.S. Pat. No. 8,288,981.

The first visible light sensor 180 may be configured to focus only on daylight entering the space through, for example, one or both of the windows 104 (e.g., to operate as a window sensor). The system controller 110 may be configured to control the lighting loads (e.g., the lighting load 122 and/or the LED light source 132) in response to the magnitude of the daylight entering the space. The system controller 110 may be configured to override automatic control of the motorized window treatments 150, for example, in response to determining that it is a cloudy day or an extremely sunny day. Alternatively, the first visible light sensor 180 may be configured to directly control the window treatments 150 to lower of the window treatment fabric 152. Examples of load control systems having window sensors are described in greater detail in commonly-assigned U.S. Patent Application Publication No. 2014/0156079, published Jun. 5, 2014, entitled METHOD OF CONTROLLING A MOTORIZED WINDOW TREATMENT, the entire disclosure of which is hereby incorporated by reference.

The first visible light sensor 180 may be configured to detect a glare source (e.g., sunlight reflecting off of a surface) outside or inside the room 102 in response to the image recorded by the camera. The system controller 110 may be configured to lower the window treatment fabric 152 of each of the motorized window treatments 150 to eliminate the glare source. Alternatively, the first visible light sensor 180 may be configured to directly control the window treatments 150 to lower of the window treatment fabric 152 to eliminate the glare source.

The first visible light sensor 180 may also be configured to operate in the occupant count mode and may execute an occupant count algorithm to count the number of occupants a particular region of interest, and/or the number of occupants entering and/or exiting the region of interest. For example, the system controller 110 may be configured to control the HVAC system 162 in response to the number of occupants in the space. The system controller 110 may be configured to control one or more of the load control devices of the load control system 100 in response to the number of occupants in the space exceeding an occupancy number threshold. Alternatively, the first visible light sensor 180 may be configured to directly control the HVAC system 162 and other load control devices.

The second visible light sensor 182 may be configured to operate in a glare detection sensor mode. For example, the second visible light sensor 182 may be configured to execute a glare detection algorithm to determine if a glare condition may exist in the room 102 from one or more images recorded by the camera. The glare condition in the room 102 may be generated by a glare source outside of the room, such as the sun, an external lamp (e.g., an outdoor building light or a streetlight), and/or a reflection of the sun or other bright light source. The second visible light sensor 182 may be configured to analyze one or more images recorded by the camera to determine if a glare condition exists outside of the room 102 as viewed from one of the windows 104.

The second visible light sensor 182 may be configured to detect multiple (e.g., different) types of glare condition. For example, the types of glare conditions may comprise a luminance-based glare condition, an illuminance-based glare condition, and/or a window sill glare condition. The luminance-based glare condition may comprise, for example, a direct glare condition and/or an indirect glare condition. A direct glare condition may occur when a glare source is a light source (e.g., a natural light source, such as the sun, and/or an artificial light source, such as a lamp) that is shining directly on a window. An indirect glare condition may occur when the glare source is a reflection of a light source that is shining on a window. In addition, the luminance-based glare condition may comprise an absolute luminance glare condition and/or a relative luminance glare condition. An absolute luminance glare condition may occur when the light level (e.g., the light intensity or luminance) of a potential glare source is too high (e.g., exceeds an absolute glare threshold). A relative luminance glare condition (e.g., a contrast glare condition) may occur when the difference between the light level of a potential glare source and a background light level (e.g., a baseline) is too high (e.g., exceeds a relative glare threshold). An illuminance-based glare condition may occur when a total illuminance of the light shining on the window is too high. A window sill glare condition may occur when a total illuminance of the light shining on a window sill outside of the window is too high.

Based on a detection of a glare condition, the second visible light sensor 182 may transmit messages to the system controller 110 via the RF signals 108 to open, close, or adjust the position of each of the motorized window treatments 150 (e.g., the position of the window treatment fabric 152 of each of the motorized window treatments 150). For example, the system controller 110 may be configured to lower the window treatment fabric 152 of each of the motorized window treatments 150 (e.g., to a fully-closed position and/or an intermediate position) to block the glare condition and/or to prevent direct sunlight penetration onto a task surface in the room 102 (e.g., a desk or a table). The system controller 110 may be configured to determine the position (e.g., a desired position P_(DES)) to which to control the motorized window treatments 150 in response to a determined location of the glare condition. If the second visible light sensor 182 does not detect a glare condition, the system controller 110 may be configured to open the motorized window treatments 150 (e.g., to control the position of the window treatment fabric 152 to a fully-open position or a visor position). Alternatively, the second visible light sensor 182 may be configured to directly control the motorized window treatments 150.

The second visible light sensor 182 and/or the system controller 110 may be configured to determine when to control the motorized window treatments 150 based on a direction of a desired change in the position of the motorized window treatments 150 (e.g., the change from a present position P_(PRES) to the desired position P_(DES)). For example, when the command to control one of the motorized window treatments 150 causes the motorized window treatment to be lowered to block a glare source and/or to prevent a glare condition, the second visible light sensor 182 and/or the system controller 110 may be configured to control the motorized window treatments using a minimum delay period (e.g., zero seconds, such that the motorized window treatments are immediately lowered to prevent the glare condition). When the command to control the motorized window treatment 150 causes the motorized window treatment 150 to be raised (e.g., to provide more view to the user), the second visible light sensor 182 and/or the system controller 110 may be configured to control the motorized window treatment 150 using a raise delay period (e.g., a raise timeout) since the last movement of the motorized window treatment 150. For example, the raise delay period may be approximately 30 minutes since the last movement of the motorized window treatment 150. The raise delay period may be used to prevent the window treatment fabric 152 of the motorized window treatment 150 from being moved (e.g., raised) too frequently.

For example, before raising the window treatment fabric 152 of the motorized window treatment 150 (e.g., the position of the motorized window treatment 150), the second visible light sensor 182 and/or the system controller 110 may determine whether the raise delay period has passed since the motorized window treatment 150 was last raised. If the raise delay period has passed, the second visible light sensor 182 and/or the system controller 110 may transmit the command to the raise the window treatment fabric 152 of the motorized window treatment 150. Otherwise, the second visible light sensor 182 and/or the system controller 110 may refrain from transmitting the command to raise the window treatment fabric 152 of the motorized window treatment 150. The second visible light sensor 182 and/or the system controller 110 may use a raise timer to determine when the raise delay period has passed since the last movement of the motorized window treatment 150. For example, the second visible light sensor 182 and/or the system controller 110 may initialize the raise timer to run for the raise delay period after raising the window treatment fabric 152 of the motorized treatment 150. The second visible light sensor 182 and/or the system controller 110 may then determine whether the raise timer has expired before raising the window treatment fabric 152 of the motorized treatment 150 again.

In addition, the second visible light sensor 182 and/or the system controller 110 may be configured to determine when to control the motorized window treatment 150 based on an amount of the desired change in the position of the window treatment fabric 152 of the motorized window treatment 150 (e.g., the change from the present position P_(PRES) to the desired position P_(DES)). As previously mentioned, the second visible light sensor 182 and/or the system controller 110 may determine the desired position P_(DES) of the window treatment fabric 152 based on the location of a detected glare condition. The amount of the desired change in the position of the motorized window treatment 150 may be a difference ΔP between the desired position P_(DES) and the present position P_(PRES) of the window treatment fabric 152. For example, if the desired position P_(DES) of the window treatment fabric 152 is higher than the present position P_(PRES) of the window treatment fabric 152, the difference ΔP may be a positive value, and if the desired position P_(DES) of the window treatment fabric 152 being lower than the present position P_(PRES) of the window treatment fabric 152, the difference ΔP may be a negative value. The second visible light sensor 182 and/or the system controller 110 may transmit the command to control the motorized window treatment 150 if the difference ΔP is greater than or equal to a raise threshold TH_(RAISE), or if the difference ΔP is less than or equal to a lower threshold TH_(LOWER). Otherwise, the second visible light sensor 182 and/or the system controller 110 may refrain from transmitting the command.

The second visible light sensor 182 and/or the system controller 110 may change the automatic control of the window treatment fabric 152 in order to avoid making relatively small adjustments to the position of the window treatment fabric 152 at a relatively high frequency, which may be distracting to an occupant of the area in which the motorized window treatment 150 is located. However, if there are no occupants within the area in which the motorized window treatment 150 is installed (e.g., the area is vacant), there may be no need to change the automatic control of the position of the window treatment fabric 152. In addition, the second visible light sensor 182 and/or the system controller 110 may determine whether to adjust the position of the window treatment fabric 152 based on a vacancy condition of the area. For example, the second visible light sensor 182 and/or the system controller 110 may determine to raise the position of the window treatment fabric 152, or to adjust the position of the window treatment fabric 152 in either direction, in response to detection of a glare condition in an image taken by the second visible light sensor 182 if the area is vacant. For example, after determining the desired position of the window treatment fabric 152 when performing automatic control, the second visible light sensor 182 and/or the system controller 110 may determine whether vacancy is a condition for adjusting the position of the window treatment fabric 152. The second visible light sensor 182 and/or the system controller 110 may determine whether vacancy is a condition for adjusting the position of the window treatment fabric 152 based on an indication of a user-selection option stored in a memory of the second visible light sensor 182 and/or the system controller 110. If vacancy is a condition for adjusting the position of the window treatment fabric 152, the second visible light sensor 182 and/or the system controller 110 may determine whether the area is vacant from an occupancy sensor in the area and/or one or more images taken by the first visible light sensor 180 before adjusting the position of the window treatment fabric 152.

The operation of the load control system 100 may be programmed and configured using, for example, the mobile device 190 or other computing device (e.g., when the mobile device is a personal computing device). The mobile device 190 may execute a graphical user interface (GUI) configuration software for allowing a user 192 to program how the load control system 100 will operate. For example, the configuration software may run as a PC application or a web interface. The configuration software and/or the system controller 110 (e.g., via instructions from the configuration software) may generate the system configuration data that may include the load control dataset that defines the operation of the load control system 100. For example, the load control dataset may include information regarding the operational settings of different load control devices of the load control system (e.g., the lighting control device 120, the plug-in load control device 140, the motorized window treatments 150, and/or the thermostat 160). The load control dataset may comprise information regarding how the load control devices respond to inputs received from the input devices. Examples of configuration procedures for load control systems are described in greater detail in commonly-assigned U.S. Pat. No. 7,391,297, issued Jun. 24, 2008, entitled HANDHELD PROGRAMMER FOR A LIGHTING CONTROL SYSTEM; U.S. Patent Application Publication No. 2008/0092075, published Apr. 17, 2008, entitled METHOD OF BUILDING A DATABASE OF A LIGHTING CONTROL SYSTEM; and U.S. Patent Application Publication No. 2014/0265568, published Sep. 18, 2014, entitled COMMISSIONING LOAD CONTROL SYSTEMS, the entire disclosure of which is hereby incorporated by reference.

The operation of the visible light sensors 180, 182 may be programmed and configured using the mobile device 190 or other network device. Each visible light sensor 180, 182 may comprise a second communication circuit for transmitting and receiving the RF signals 109 (e.g., directly with the network device 190 using a standard protocol). During the configuration procedure of the load control system 100, the visible light sensors 180, 182 may each be configured to record an image of the space and transmit the image to the network device 190 (e.g., directly to the network device via the RF signals 109 using the standard protocol). The network device 190 may display the image on the visual display and a user may configure the operation of each visible light sensor 180, 182 to set one or more configuration parameters (e.g., configuration information) of the visible light sensor. For example, for different environmental characteristics to be sensed and controlled by the visible light sensors 180, 182 (e.g., occupant movements, light level inside of the room, daylight level outside of the room), the user may indicate different regions of interest on the image by tracing (such as with a finger or stylus) masked areas on the image displayed on the visual display. The visible light sensors 180, 182 may each be configured to establish different masks and/or operational characteristics depending upon the environmental characteristic to be sensed (e.g., occupant movements, light level inside of the room, daylight level outside of the room, color temperature, etc.).

After configuration of the visible light sensors 180, 182 is completed at the network device 190, the network device may transmit configuration information to the visible light sensors (e.g., directly to the visible light sensors via the RF signals 109 using the standard protocol). The visible light sensors 180, 182 may each store the configuration information in memory, such that the visible light sensors may operate appropriately during normal operation. For example, for each sensor event the visible light sensors 180, 182 are to monitor, the network device 190 may transmit to the respective visible light sensor the sensor mode for the event, one or more masks defining regions of interest for the event, possibly an indication of the algorithm to be used to sense the environmental characteristic of the event, and one or more operational characteristics for the event.

While the load control system 100 of FIG. 1 has been described above with reference to two visible light sensors 180, 182, the load control system 100 could also simply include either one of the visible light sensors 180, 182. For example, the load control system 100 may not include the first visible light sensor 180 and may only include the second visible light sensor 182, which may be mounted to the window 104 and may operate to prevent sun glare from occurring on a task surface in the room 102. In addition, the load control system 100 may have more than two visible light sensors. Each window may have a respective visible light sensor, or a visible light sensor may receive an image through a window that is representative of a group of windows having motorized window treatments that are collectively controlled based on the image of a single visible light sensor.

FIG. 2 is a simplified side view of an example space 200 having a visible light sensor 210 (e.g., such as the visible light sensor 182 of the load control system 100 shown in FIG. 1). The visible light sensor 210 may be mounted to a window 202, which may be located in a façade 204 of a building in which the space 200 is located and may allow light (e.g., sunlight) to enter the space. The visible light sensor 210 may be mounted to an inside surface of the window 202 (e.g., as shown in FIG. 2) or an outside surface of the window 202. The window 202 may be characterized by a height h_(WIN-BOT) of the bottom of the window and a height h_(WIN-TOP) of the top of the window. The space 200 may also comprise a work surface, e.g., a table 206, which may have a height h_(WORK) and may be located at a distance d_(WORK) from the window 202.

A motorized window treatment, such as a motorized roller shade 220 may be mounted over the window 202. The motorized roller shade 220 may comprise a roller tube 222 around which a shade fabric 224 may be wrapped. The shade fabric 224 may have a hembar 226 at the lower edge of the shade fabric that may be a height h_(HEMBAR) above the floor. The motorized roller shade 220 may comprise a motor drive unit (not shown) that may be configured to rotate the roller tube 222 to move the shade fabric 224 between a fully-open position P_(OPEN) (e.g., at which the window 202 is not covered and the hembar 226 may be at the top of the window) and a fully-closed position P_(CLOSED) (e.g., at which the window 202 is fully covered and the hembar 226 may be at the bottom of the window). Further, the motor drive unit may control the position of the shade fabric 222 to one of a plurality of preset positions between the fully-open position and the fully-closed position.

A glare condition for an occupant of the room 200 may be caused by a glare source, such as the sun, an external lamp (e.g., an outdoor building light or a streetlight), or a reflection of the sun or other bright light source, that may be located outside of the window 202. For example, light from the glare source may shine through the window 202 into the room 200 and may extend into the room (e.g., onto the floor) for a penetration distance d_(PEN) from the window 202 and/or from the façade 204. The penetration distance d_(PEN) of the light may be measured in a direction normal to the window 202 and/or from the façade 204. The penetration distance d_(PEN) of the light from the glare source may be a function of the height h_(HEMBAR) of the hembar 226 of the motorized roller shade 220 and a profile angle θ_(P) of the glare source. The profile angle θ_(P) may represent the position of the glare source outside of the window 202. The position of the glare source may be defined by an altitude angle (e.g., a vertical angle) and an azimuth angle (e.g., a horizontal angle) from the center of view of the visible light sensor 210 (e.g., a direction perpendicular to the window 202 and/or the façade 204. The profile angle θ_(P) may be defined as an angle of a projection of the line from the glare source to the visible light sensor onto a vertical plane that is perpendicular to the window 202 and/or the façade 204. The penetration distance d_(PEN) of light from the glare source onto the floor of the space 200 (e.g., in the direction normal to the window 202 and/or the façade 204) may be determined by considering a triangle formed by the penetration distance d_(PEN), the height h_(HEMBAR) of the hembar 226, and a length l of the light shining into the space 200 in the normal direction to the window 202, as shown in the side view of the window 202 in FIG. 2, e.g.,

tan(θ_(P))=h _(HEMBAR) /d _(PEN).  (Equation 1)

In response to the visible light sensor 210 detecting a glare source outside of the window 202, the visible light sensor 210 and/or a system controller (e.g., the system controller 110) may be configured to determine a position to which to control the shade fabric 224 (e.g., the hembar 226 of the shade fabric 224) of the motorized roller shade 220 to prevent a glare condition in the space. For example, the position of the hembar 226 of the motorized roller shade 220 may be adjusted to prevent the penetration distance d_(PEN) from exceeding a maximum penetration distance d_(PEN-MAX). For example, if the sun is shining in the window 220, the visible light sensor 210 may be configured to process the image to determine the profile angle θ_(S) that defines the location of the glare source. The visible light sensor 210 and/or the system controller may be configured to calculate the desired height h_(HEMBAR) above the floor to which to control the hembar 226 to prevent the light from the glare source from exceeding the maximum penetration distance d_(PEN-MAX), e.g.,

h_(HEMBAR)=tan(θ_(P))·d _(PEN-MAX).  (Equation 2)

The visible light sensor 210 and/or the system controller may be configured with values for the top and bottom heights h_(WIN-TOP), h_(WIN-BOT) of the window 220, e.g., during configuration of the visible light sensor and/or the system controller. The visible light sensor 210 and/or the system controller may be configured to determine a desired position of the hembar 226 between the fully-open position P_(OPEN) and the fully-closed position P_(CLOSED) of the motorized roller shade 220 using the top and bottom heights h_(WIN-TOP), h_(WIN-BOT) and the calculated height h_(HEMBAR) of the hembar.

In addition, the position of the hembar 226 of the motorized roller shade 220 may be adjusted to prevent light from the glare source from shining on the table 206. For example, the visible light sensor 210 and/or the system controller may be configured to calculate the desired height h_(HEMBAR) above the floor to which to control the hembar 226 to prevent the light from the glare source from shining on the table 206, e.g.,

h_(HEMBAR)=(tan(θ_(P))·d _(WORK))+h _(WORK).  (Equation 3)

The position of the hembar 226 of the motorized roller shade 220 may be adjusted to prevent light from the glare source from shining on in the eyes of occupants of the space 200. For example, the visible light sensor 210 and/or the system controller may be configured to calculate the desired height h_(HEMBAR) above the floor to which to control the hembar 226 based on an estimated height of the occupant's eyes and/or an estimated distance of the occupants from the window. For example, if the room 200 includes a visible light sensor located within the room (e.g., as the visible light sensor 180 of the load control system 100 of FIG. 1), that visible light sensor may be configured to process an image of the room to determine the values for the height of the occupant's eyes and/or the distance of the occupants from the window.

The visible light sensor 210 and/or the system controller may store values for the maximum penetration distance d_(PEN-MAX), the height h_(WORK) of the table 206, and the distance d_(WORK) of the table 206 from the window 202. For example, the visible light sensor 210 and/or the system controller may be configured with these values during the configuration of the visible light sensor 210 and/or the system controller (e.g., using the mobile device 190 or other network device). Additionally or alternatively, the visible light sensor 206 and/or the system controller may be configured with default values for the maximum penetration distance d_(PEN-MAX), the height h_(WORK) of the table 206, and the distance d_(WORK) of the table 206 from the window 202. For example, if the room 200 includes a visible light sensor located within the room (e.g., as the visible light sensor 180 of the load control system 100 of FIG. 1), that visible light sensor may be configured to process an image of the room to determine the values for the maximum penetration distance d_(PEN-MAX), the height h_(WORK) of the table 206, and the distance d_(WORK) of the table 206 from the window 202, and transmit those values to the visible light sensor 210 on the window 202 and/or the system controller.

FIG. 3 is a simplified block diagram of an example visible light sensor 300, which may be deployed as one or both of the visible light sensors 180, 182 of the load control system 100 shown in FIG. 1 and/or the visible light sensor 210 of FIG. 2. The visible light sensor 300 may comprise a control circuit 310, for example, a microprocessor, a programmable logic device (PLD), a microcontroller, an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or any suitable processing device. The control circuit 310 may be coupled to a memory 312 for storage of sensor events, masks, operational characteristics, etc. of the visible light sensor 300. The memory 312 may be implemented as an external integrated circuit (IC) or as an internal circuit of the control circuit 310. The memory 312 may comprise a computer-readable storage media or machine-readable storage media that maintains a device dataset of associated device identifiers, network information, and/or computer-executable instructions for performing as described herein. For example, the memory 312 may comprise computer-executable instructions or machine-readable instructions that include one or more portions of the procedures described herein. For example, the computer-executable instructions or machine-readable instructions may, when executed, cause the control circuit 310 to perform one or more of the procedures 700, 800, 900, 1000, 1100, 1200, 1300, 1350, 1400, and/or 1500.

The visible light sensor 300 may comprise a visible light sensing circuit 320 having an image recording circuit, such as a camera 322, and an image processing circuit, such as a processor 324. The image processor 324 may comprise a digital signal processor (DSP), a microprocessor, a programmable logic device (PLD), a microcontroller, an application specific integrated circuit (ASIC), a field-programmable gate array (FPGA), or any suitable processing device. The camera 322 may be positioned towards a space in which one or more environmental characteristics are to be sensed in a space (e.g., into the room 102). The camera 322 may be configured to capture or record an image. For example, the camera 322 may be configured to capture images at a particular sampling rate, where a single image may be referred to as a frame acquisition. One example frame acquisition rate is approximately ten frames per second. The frame acquisition rate may be limited to reduce the required processing power of the visible light sensor. Each image may consist of an array of pixels, where each pixel has one or more values associated with it. A raw RGB image may have three values for each pixel: one value for each of the red, green, and blue intensities, respectively. One implementation may use the existing RGB system for pixel colors, where each component of the intensity has a value from 0-255. For example, a red pixel would have an RGB value of (255, 0, 0), whereas a blue pixel would have an RGB value of (0, 0, 255). Any given pixel that is detected to be a combination of red, green, and/or blue may be some combination of (0-255, 0-255, 0-255). One will recognize that over representations for an image may be used.

The camera 322 may provide the captured image (e.g., a raw image) to the image processor 324. The image processor 324 may be configured to process the image and provide to the control circuit 310 one or more sense signals that are representative of the sensed environmental characteristics (e.g., an occurrence of movement, an amount of movement, a direction of movement, a velocity of movement, a counted number of occupants, a light intensity, a light color, an amount of direct sunlight penetration, etc.). For example, the one or more sense signals provided to the control circuit 310 may be representative of movement in the space and/or a measured light level in the space.

In addition, the image processor 324 may provide a raw image or a processed (e.g., preprocessed) image to the control circuit 310, which may be configured to process the image to determine sensed environmental characteristics. Regardless, the control circuit 310 may then use the sensed environmental characteristics to transmit control commands to load devices (e.g., directly or through system controller 110).

One example of a processed image, as is known in the art, is an HDR image, which may include the luminance of a pixel in the data of the image. The luminance of the pixel may be measured from an LDR image RGB by adding R, G, B intensity values, weighted according to the following formula:

Luminance(perceived)=(0.299*R+0.587*G+0.114*B).  (Equation 4)

The example weighting coefficients may factor in the non-uniform response of the human eye to different wavelengths of light. However, other coefficients may alternatively be used.

If the visible light sensor 300 have a fish-eye lens, the image captured by the camera 322 may be a warped image 400, for example, as shown in FIG. 4A. The image processor 324 may be configured to preprocess the image to de-warp the image and to generate a non-warped image 410, for example as in FIG. 4B.

Another image processing technique may include mapping the RGB sensor response to CIE tristimulus values to acquire chromaticity coordinates and thereby the Correlated Color Temperature (CCT). An example method is described by Joe Smith in the following reference: Calculating Color Temperature and Illuminance using the TAOS TCS3414CS Digital Color Sensor, Intelligent Opto Sensor Designer's Notebook, Feb. 27, 2009. Another example of a processed image may be an image to which a digital filter, or a digital mask has been applied. A digital mask may be used to eliminate regions within the image, which may not have value for further analysis and processing. Alternatively, a complement of a digital mask may be a region of interest (e.g., an area within an image that has been identified for further processing or analysis). A processed image may also be created via a technique known as background subtraction. For example, using background subtraction, a background image, which may incorporate the history of the image over time (e.g., the previous state of the room), may be subtracted from the current image (e.g., the current state of the room). This technique may identify differences in the images. Background subtraction may be useful for detecting movement in an image and for occupancy and vacancy detection. Various algorithms may be used for background maintenance, to determine how to effectively combine pixels over time into the background image. Some example background maintenance algorithms may include: adjusted frame difference, mean and threshold, mean and covariance, mixture of Gaussians, and normalized block correlation. These and other similar details inherent to image processing would be familiar to one skilled in the art.

The control circuit 310 and/or the image processor 324 may be configured to apply one or more masks to focus on one or more regions of interest in the image (e.g., the raw image and/or the preprocessed image) to sense one or more environmental characteristics of the space. As used herein, a mask may be any definition to define a region of interest of an image. For example, assuming an image may be defined as an N×M array of pixels where each pixel has a defined coordinate/position in the array, a mask be defined as a sequence of pixel coordinates that define the outer perimeter of a region of interest within the image. As another example, a mask may be defined as an N×M array that corresponds to the N×M array of pixels of an image. Each entry of the mask may be a 1 or 0, for example, whereby entries having a 1 may define the region of interest. Such a representation may allow an image array and a mask array to be “ANDED,” which may cancel or zero out all pixels of the image that are not of interest. As another alternative, rather than a mask defining the region of interest of the image, a mask may define the region that is not of interest. These are merely examples and other representations may be used.

For example, the image captured by the camera 332 may include portions on the sides of the image that have an obstructed view. For example, there may be a window landing at the bottom of the window and/or an overhang at the top of the window that may obstruct the view of the camera 332 (e.g., as shown in FIGS. 4A and 4B). While not shown in FIGS. 4A and 4B, the image may have obstructed areas on the sides of the window. Since the obstructed areas may not have glare sources, there is no need for the image processor 334 to process the pixels in the obstructed areas. Accordingly, the control circuit 310 and/or the image processor 324 may be configured to apply respective masks to the top and bottom obstructed areas. For example, the control circuit 310 and/or the image processor 334 may be configured to focus a region of interest 402, 412 (e.g., a field of view of the image) as shown in FIGS. 4A and 4B. In the warped image 400, a region of interest 402 may have curved upper and lower bounds as shown in FIG. 4A. In the non-warped image 410, a region of interest 412 may be rectangularly shaped (e.g., having straight bounds) as shown in FIG. 4B.

The visible light sensor 300 may comprise a first communication circuit 330 configured to transmit and receive messages via a first communication link using a first protocol. For example, the first communication link may comprise a wireless communication link and the first communication circuit 330 may comprise an RF transceiver coupled to an antenna. In addition, the first communication link may comprise a wired digital communication link and the first communication circuit 330 may comprise a wired communication circuit. The first protocol may comprise a proprietary protocol. The control circuit 310 may be configured to transmit and receive messages via the first communication link during normal operation of the visible light sensor 300. The control circuit 310 may be configured to transmit an indication of the sensed environmental characteristic via the first communication link during normal operation of the visible light sensor 300. For example, the control circuit 310 may be configured to transmit an indication of a detected state (e.g., an occupancy or vacancy condition) and/or a measured environmental characteristic (e.g., a measured light level) via the first communication link during normal operation of the visible light sensor 300.

The visible light sensor 300 may comprise a second communication circuit 332 configured to transmit and receive messages via a second communication link using a second protocol. For example, the second communication link may comprise a wireless communication link and the second communication circuit 332 may comprise an RF transceiver coupled to an antenna. In addition, the second communication link may comprise a wired digital communication link and the second communication circuit 332 may comprise a wired communication circuit. The second protocol may comprise a standard protocol. The control circuit 310 may be configured to transmit and receive messages via the second communication link during configuration of the visible light sensor 300. For example, the control circuit 310 may be configured to transmit an image recorded by the camera 322 via the second communication link during configuration of the visible light sensor 300.

The visible light sensor 300 may comprise a power source 340 for producing a DC supply voltage V_(CC) for powering the control circuit 310, the memory 312, the image processor 324, the first and second communication circuits 330, 332, and other low-voltage circuitry of the visible light sensor 300. The power source 340 may comprise a power supply configured to receive an external supply voltage from an external power source (e.g., an AC mains line voltage power source and/or an external DC power supply). In addition, the power source 340 may comprise a battery for powering the circuitry of the visible light sensor 300.

The visible light sensor 300 may further comprise a low-power occupancy sensing circuit, such as a passive infrared (PIR) detector circuit 350. The PIR detector circuit 350 may generate a PIR detect signal V_(PIR) (e.g., a low-power occupancy signal) that is representative of an occupancy and/or vacancy condition in the space in response to detected passive infrared energy in the space. The PIR detector circuit 350 may consume less power than the visible light sensing circuit 320. However, the visible light sensing circuit 320 may be more accurate than the PIR detector circuit 350. For example, when the power source 340 is a battery, the control circuit 310 may be configured to disable the visible light sensing circuit 320 and use the PIR detector circuit 350 to detect occupancy conditions. The control circuit 310 may disable the light sensing circuit 320, for example, when the space is vacant. The control circuit 310 may detect an occupancy condition in the space in response to the PIR detect signal V_(PIR) and may subsequently enable the visible light sensing circuit 320 to detect a continued occupancy condition and/or a vacancy condition. The control circuit 310 may enable the visible light sensing circuit 320 immediately after detecting an occupancy condition in the space in response to the PIR detect signal V_(PIR). The control circuit 310 may also keep the visible light sensing circuit 320 disabled after detecting an occupancy condition in the space (in response to the PIR detect signal V_(PIR)). The control circuit 310 may keep the visible light sensing circuit 320 disabled until the PIR detect signal V_(PIR) indicates that the space is vacant. The control circuit 310 may not make a determination that the space is vacant until the visible light sensing circuit 320 subsequently indicates that the space is vacant.

When the visible light sensor 300 is mounted to a window (e.g., as the visible light sensor 180 of the load control system of FIG. 1), the control circuit 310 may be configured to record one or more images of the space outside of the window via the camera 322 and process the one or more images to determine if a glare condition exists. The visible light sensor 300 may comprise a fish-eye lens (not shown), which may cause the images recorded by the camera 322 to be warped. The control circuit 310 and/or the image processor 324 may be configured to de-warp the images recorded by the camera 322 to produce non-warped images, which may be characterized by rows of constant profile angle.

The control circuit 310 may be configured to process each pixel of the non-warped images to determine if a glare conditions exists for each pixel. The control circuit 310 may begin processing the image at a portion of the image which may be relative to a position on a window or group of windows from which the image is taken. For example, the portion of the image may represent a bottom portion of the window and the control circuit may begin processing the non-warped image at the bottom portion. The bottom portion may include a predefined number of pixel rows from the bottom of the image (e.g., a bottom row of pixels in the non-warped image). The control circuit may also, or alternatively, begin processing the image from a top portion (e.g., a top row of pixels) of the image. The portion of the image that is processed first may depend on the direction from which the motorized window treatment moves the covering material to close the covering material and/or the adjust the present position of the covering material to reduce the processing resources utilized to identify a glare condition in the image.

The control circuit 310 may be configured to start at the bottom row of pixels of the non-warped image (e.g., at the left or right side). The control circuit 310 may step through each pixel in the bottom row and process each pixel to determine if a glare condition exists before moving up to the next row. After the control circuit 310 determines that a glare condition exists, the control circuit 310 may stop processing the non-warped image and may operate to control one or more motorized window treatments (e.g., such as the motorized window treatments 140 of FIG. 1 and/or the motorized roller shade 220 of FIG. 2) to remove the glare condition (e.g., as will be described in greater detail below). This may prevent the rest of the image from being processed to detect the glare condition. If the control circuit 310 processes the entire image without detecting a glare condition, the control circuit may conclude that no glare conditions exist and may control the motorized window treatment to open. Since the control circuit 310 processes the pixels of the non-warped image starting at the bottom row of the non-warped image, the control circuit 310 may find the lowest pixel that indicates a glare source before detecting other higher glare sources. The lowest pixel that indicates a glare source is an important parameter for determining a position to which to control the motorized window treatments to prevent glare on the task surface. This allows allow the control circuit 310 to minimize the amount of processing that is needed to determine the shade control command to prevent glare in the room.

When processing the non-warped images to determine if a glare condition exists, the control circuit 310 may be configured to determine if an absolute glare condition exists and/or a relative glare condition (e.g., a contrast glare condition) exists. The control circuit 310 may be configured to determine that an absolute glare condition exists if a luminance L_(P) (e.g., absolute intensity or light level) of a pixel exceeds an absolute glare threshold (e.g., approximately 10,000 cd/m²). The control circuit 310 may be configured to determine that a relative glare condition exists if the luminance L_(P) of a pixel as compared to a background luminance L_(B) (e.g., the difference between the luminance L_(P) of the pixel and the background luminance L_(B)) exceeds a relative glare threshold (e.g., approximately 4,000 cd/m²). If the control circuit 310 detects that either an absolute glare condition exists or a relative glare condition exists, the control circuit may stop processing the non-warped image and move to control the motorized window treatment(s) to remove the glare condition. For example, the motorized window treatments(s) may remove the glare condition by determining a position to which to control the motorized window treatment(s) based on the location of the glare condition. The thresholds may be adjustable to adjust a sensitivity of the visible light sensor 300. For example, the thresholds may be adjusted by a user during configuration of the visible light sensor 300.

To determine if a relative glare condition exists, the control circuit 310 may determine a background light level from the non-warped image (e.g., a baseline). The background light level may be a value representative of a luminance of the background of the non-warped image. For example, the background light level may be a percentile luminance of the non-warped image (e.g., a 25^(th) percentile luminance). The 25^(th) percentile luminance may be a luminance, where 25% of the pixels of the non-warped image are darker than the 25^(th) percentile luminance. To detect the relative glare condition, the control circuit 310 may calculate a contrast ratio C_(P) based on the luminance L_(P) of a pixel and the 25^(th) percentile luminance L₂₅ (e.g., C_(P)=L_(P)/L₂₅). If the contrast ratio C_(P) is greater than a contrast threshold C_(TH) (e.g., approximately 15), the control circuit may determine that a relative glare condition exists.

Examples of visible light sensors configured to detect absolute and relative glare conditions are described in greater detail in commonly-assigned U.S. Patent Application Publication No. 2018/0252035, published Sep. 6, 2018, entitled VISIBLE LIGHT SENSOR CONFIGURED FOR GLARE DETECTION AND CONTROLLING MOTORIZED WINDOW TREATMENTS, the entire disclosure of which is hereby incorporated by reference.

When the control circuit 310 has determined that a glare condition exists, the control circuit 310 may process the pixel to determine a profile angle of the glare source. For example, each pixel of the image may be characterized by a value of the profile angle. The values for the profile angle may be stored in the memory 312. The control circuit 310 may retrieve the appropriate profile angle based on the processed pixel. In addition, the profile angle may be determined and/or calculated from the data of the image. The control circuit 310 may determine a position to which to control the motorized window treatments using the profile angle (e.g., as shown in Equations 2 and/or 3 above). In addition, the control circuit 310 may transmit the profile angle to another device (e.g., the system controller 110), which may determine a position to which to control the motorized window treatments to avoid a glare condition in the room.

FIG. 5A is a sequence diagram of an example glare prevention procedure 500. As seen in FIG. 5A the glare prevention procedure 500 may be performed by a visible light sensor 502 (e.g., the visible light sensors 180, 182, 210, 300) and a motorized window treatment 504 (e.g., the motorized roller shade 220). At 510, the visible light sensor 502 may record an image of the outside of a room and/or building. At 512, the visible light sensor may process the image to detect a glare condition. For example, the detection of a glare condition may include calculating the luminance L_(P) of a pixel in the image and comparing them to luminance thresholds.

If a glare condition is detected, the visible light sensor 502 may determine a profile angle of the glare condition at 514. As described herein, the profile angle may define the position of the glare source outside of a window (e.g., the window 202 in FIG. 2). The profile angle may be determined based on the location of the detected glare source (e.g., a pixel in the image recorded at 510). The visible light sensor 502 may comprise a lookup table to determine the profile angle. For example, the lookup table may provide an indication of the profile angle based on the location (e.g., a pixel in the image recorded at 510) of the detected glare source.

At 516, the visible light sensor 502 may determine a position for the motorized window treatment 504 (e.g., a shade position). The position may prevent a glare condition from affecting a room (e.g., the room 102 and/or the space 200). For example, the shade fabric may be positioned such that the shade fabric blocks light from the glare source represented by the pixel where the glare was detected. At 518, the position may be transmitted to the motorized window treatment 504. After receiving the position, the motorized window treatment may move the shade fabric to the indicated position at 520.

FIG. 5B is a sequence diagram of an example glare prevention procedure 550. As seen in FIG. 5B, the glare prevention procedure 550 may be performed by a visible light sensor 552 (e.g., the visible light sensors 180, 182, 210, 300), a system controller 554 (e.g., the system controller 110), and a motorized window treatment 556 (e.g., the motorized roller shade 220). At 558, the visible light sensor 552 may record an image of the outside of a room and/or building. At 560, the visible light sensor may process the image to detect a glare condition. For example, the detection of a glare condition may include calculating the luminance L_(PI) of a pixel in the image and comparing them to luminance thresholds (e.g., 520, 522, 530, 536, and/or 538 of FIG. 5A).

If a glare condition is detected, the visible light sensor 552 may determine a profile angle of the glare condition at 562. As described herein, the profile angle may define the position of the glare source outside of a window (e.g., the window 202 in FIG. 2). The profile angle may be determined based on the location of the detected glare source (e.g., a pixel in the image recorded at 558). The visible light sensor 552 may comprise a lookup table to determine the profile angle. For example, the lookup table may provide an indication of the profile angle based on the location (e.g., a pixel in the image recorded at 558) of the detected glare source.

At 564, the visible light sensor 552 may transmit the profile angle to the system controller 554 (e.g., the system controller 110). At 566, the system controller 554 may determine a position for the motorized window treatment 556 (e.g., a shade position). For example, the shade fabric may be positioned such that the shade fabric blocks light from the glare source represented by the pixel where a glare was detected. At 568, the system controller 554 may transmit the position to the motorized window treatment 556. After receiving the position for the motorized window treatment, the motorized window treatment may move the shade fabric to the indicated position at 570. Though the visible light sensor 552 is shown as processing the image, the system controller 554 may also, or alternatively, perform the image processing after the visible light sensor 552 generates the image.

FIG. 6A is a simplified example of a non-warped image 600 used to detect a glare condition. As seen in FIG. 6A, the image 600 may include one or more pixels (e.g., pixel 602, 604 and 606). The pixels may be organized in one or more pixel rows and/or one or more pixel columns. A visible light sensor (e.g., the visible light sensor 300) may retrieve the image 600 and process the image to determine if a glare condition exists. The visible light sensor may process the image to determine if a glare condition is present. This determination may include determining whether an absolute glare condition exist and/or a relative glare condition exists.

The visible light sensor may begin processing the first pixel in the bottom portion of the image 600. For example, the visible light sensor may begin processing the image 600 at pixel 602. The visible light sensor may determine the luminance of the pixel 602 to determine whether an absolute glare condition and/or a relative glare condition exists. If the visible light sensor determines that a glare condition (e.g., an absolute glare condition and/or a relative glare condition) does not exist, the visible light sensor may process the next pixel in the image (e.g., pixel 604).

The visible light sensor may continue processing the pixels in the image until the visible light sensor determines that a glare condition exists or finishes processing the image. For example, the visible light sensor may determine that a relative glare condition or an absolute glare condition exists at pixel 806 (e.g., the luminance of the pixel 806 is higher than a high luminance threshold or relative luminance threshold) and stop processing the image at pixel 806.

FIG. 6B is a simplified example of a non-warped image 650 used to detect a glare condition. The non-warped image 650 may be similar to the non-warped image 600. The non-warped image 650 may include one or more pixels that indicate a smaller glare source, but have a high intensity (e.g., pixels 652, 654). For example, the glare source indicated by pixels 652, 654 may be caused by reflections on small surfaces, ripples in a body of water, and/or rain drops on the window. Even though these pixels indicate a smaller glare source than other glare sources, such as the glare source indicated by pixels 656, the higher intensity (e.g., higher than an established threshold) may cause glare conditions to be incorrectly detected. The visible light sensor may process the image to account for the smaller high-intensity glare conditions. For example, the visible light sensor may reduce the resolution of the image and/or group adjacent pixels having similar intensities into pixel groups. Reducing the resolution of the image and/or grouping pixels with similar intensities into pixel groups may allow the visible light sensor adjust glare condition thresholds to perform improved glare condition detection (e.g., by adjusting glare condition thresholds based on the size of a pixel group and/or the resolution of an image). Other techniques may be used to account for small but high intensity glare sources.

FIG. 7 shows a flowchart of an example glare prevention procedure 700 executed periodically by a control circuit of a visible light sensor (e.g., the control circuit 310 of the visible light sensor 300) at 710. At 712, the control circuit may determine a resolution at which to retrieve and process an image. The determined resolution may be based on how the image is to be processed and/or a type of glare to be detected. For example, the control circuit may choose a particular resolution at which to retrieve and process the image in order to detect large glare sources rather than small glare sources and vice versa. The control circuit may process an image multiple times at multiple resolutions to detect different glare conditions using different thresholds that correspond to the particular resolution. The processing of different resolution images may allow the control circuit to appropriately detect glare conditions due to small high-intensity glare sources and/or large low-intensity glare sources. For example, small glare sources may be more easily detected in a higher resolution image because there are more pixels in the image. The small glare sources may be less easily detected in a lower resolution images (e.g., the small glare sources may be removed from and/or filtered out of the lower resolution image), which may allow a large low intensity glare source to be detected.

At 714, the control circuit may retrieve the image at the determined resolution. For example, the control circuit may adjust the resolution of the visible light sensor (e.g., the image capturing circuit 320) to the determined resolution prior to recording (e.g., capturing) a new image. In addition, the control circuit may record (e.g., capture) a new image at an initial resolution (e.g., a fixed resolution) and reduce the resolution of the captured image to the determined resolution. For example, the image may be captured at an initial resolution that may be a high resolution image, which may include approximately one million pixels (e.g., a one megapixel image or a 1280×1024 image). Further, the control circuit may retrieve a stored image from memory (e.g., the memory 312) and reduce the resolution of the stored image to the determined resolution. The retrieved image may be a warped image or a non-warped image. If the retrieved image is a warped image (e.g., if the visible light sensor has a fish-eye lens), the control circuit may produce a non-warped image at 714.

At 716, the control circuit may process the image to determine if a glare condition exists in the image and the location of the glare source within the image if a glare condition does exist. The control circuit may process one or more images using different techniques to detect different types of glare sources and/or different sizes of glare sources. If the control circuit is not done processing images to detect glare conditions at 718, the glare prevention procedure 700 may loop around to determine the resolution for the next image to retrieve and process.

When the control circuit is done processing images at 718, the control circuit may determine if at least one glare condition was detected during the processing of the one or more images at 720. If the control circuit did not detect any glare conditions at 720, the control circuit may set the position to be an open position (e.g., the fully-open position) at 722. As described herein, when a glare condition is not present, the motorized window treatment may be moved to or remain in the fully open position. If the control circuit detected at least one glare condition at 720, the control circuit may determine the lowest location of a glare source (e.g., the lowest pixel in the images that were processed at 716 and indicates a glare condition) at 724. At 726, the control circuit may determine a profile angle A_(PI) for the determined lowest location of a glare source (e.g., the determined lowest pixel). As described herein, the profile angle may represent an approximate location of the glare source and/or may indicate where glare may occur inside the room based on the location of a detected glare condition. For example, the control circuit may recall the profile angle A_(PI) for the determined lowest pixel from memory and/or may calculate the profile angle A_(PI) using the data of the determined lowest pixel.

At 728, the control circuit may determine a position for the motorized window treatment based on the profile angle A_(PI). For example, the control circuit may determine a position of the motorized window treatment for preventing light from the glare source by determining the position of the motorized window treatment that will cover the profile angle A_(PI). In addition, the control circuit may determine a position of the motorized window treatment for preventing light from the glare source from exceeding a maximum penetration distance and/or preventing glare on a task surface based on the profile angle A_(PI) (e.g., using Equation 2 and/or Equation 3 shown above). The position for preventing light from the glare source from exceeding a maximum penetration distance and/or for preventing glare on the task surface may also be dependent upon the maximum penetration distance, a height of the task surface, and/or a distance of the task surface from the windows, which may be stored in memory. Determining the position of the motorized window treatment based on the profile angle may allow the motorized window to cover the location where the glare condition is detected and/or may prevent glare inside the room.

After determining the position of the motorized window treatment at 728, the control circuit may determine at 730 if the motorized window treatments will be lowered to move to the position determined at 728. If the control circuit determines that the motorized window treatments will be lowered at 728, the control circuit may transmit, at 732, a shade control command for controlling the position of motorized window treatments in the space to the determined position for preventing glare on the task surface (e.g., directly or via the system controller 110), before the glare prevention procedure 700 exits. For example, the shade control command may move the motorized window treatment corresponding to the determined lowest location of a glare source (e.g., the location of the determined lowest pixel). Alternatively, the control circuit may be configured to transmit the profile angle A_(PI) to the system controller, which may determine the position of the motorized window treatment for preventing glare on the task surface and transmit the shade control command to the motorized window treatments.

If the control circuit determines that the motorized window treatments will be raised at 730, the control circuit may determine at 734 if the raise timeout has expired (e.g., the raise delay period has passed) since the last movement of the motorized window treatments. When the raise timeout has not expired at 734, the glare prevention procedure 700 may exit. When the raise timeout has expired at 734, the control circuit may transmit a shade control command for controlling the position of the motorized window treatments at 730, before the glare prevention procedure 700 exits. Though the image processing may be described as being performed at the visible light sensor, the image processing may be performed at the system controller or another image processing device in the load control system.

FIG. 8 shows a flowchart of an example glare detection procedure 800 (e.g., a luminance-based glare detection procedure) for processing an image to detect a glare condition. The glare detection procedure 800 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 310 of the visible light sensor 300) and/or a system controller (e.g., system controller 110). For example, the glare detection procedure 800 may be executed at 716 of the glare prevention procedure 700 shown in FIG. 7.

The glare detection procedure 800 may begin at 810. At 812, the control circuit may determine a glare condition luminance threshold L_(TH) (e.g., an absolute glare condition threshold and/or a relative glare condition threshold) for processing the image (e.g., the image retrieved at 614 of the glare detection procedure 600 of FIG. 6). The control circuit may determine the glare condition luminance threshold L_(TH) based on, for example, the resolution of the image. For example, when the resolution of the image is higher, in which the size of the individual pixels are smaller, the glare condition luminance threshold L_(TH) may be higher. When the resolution is lower, in which the size of the individual pixels are larger, the glare condition luminance threshold L_(TH) may be lower. For example, the glare condition luminance threshold L_(TH) may be approximately 25,000 candelas per square meter for a high resolution image (e.g., a one megapixel image), and approximately 5,000 candelas per square meter for a low resolution image (e.g., a 200×200 image).

At 814, the control circuit of the visible light sensor or the system controller may begin processing a first pixel in the image. For example, the pixel may be located at a predetermined location in the image, such as a bottom portion (e.g., a bottom row of pixels) or top portion (e.g., a top row of pixels) of the image. The control circuit of the visible light sensor may begin processing the image at a pixel that is located at a bottom right-hand corner or a bottom left-hand corner of the image for shades that lower from and raise to a window treatment mounted at the top of the window. The control circuit of the visible light sensor may begin analyzing a pixel in the image that is located at a top right-hand corner or a top left-hand corner of the image for shades that raise from and lower to a motorized window treatment mounted at the bottom of the window. The direction of the analysis may depend on the location the motorized window treatment is mounted and/or the location at which a critical glare condition (e.g., a highest glare condition or a lowest glare condition) is expected to be detected for controlling the motorized window treatments to reduce processing resources for processing images.

The control circuit may then process the pixel to attempt to detect a glare condition. For example, the control circuit may determine a luminance L_(P) of the pixel at 816 and compare the luminance L_(P) to the glare condition luminance threshold L_(TH) at 818. If the retrieved image is an HDR image, the control circuit may retrieve the luminance L_(P) of the pixel from the data of the HDR image at 816. The control circuit may also calculate the luminance L_(P) of the pixel (e.g., using Equation 4 shown above) at 816. If, at 818, the luminance L_(P) of the pixel is less than the glare condition luminance threshold L_(TH) (e.g., a glare condition is not present), the control circuit may determine if there are additional pixels to process at 820. If there are additional pixels to process, the control circuit may move to a next pixel at 822 and process the next pixel to attempt to detect a glare condition. When the control circuit moves onto the next pixel at 822, the control circuit may move to the pixel adjacent to the previous pixel in the present row of pixels (e.g., to the left or the right of the previous pixel). When the control circuit has processed each pixel in a row, the control circuit may move up to the next row of pixels. In this way, the control circuit may step through multiple pixels in the non-warped image by starting at the bottom row and moving up through the rows of the image. If there are not additional pixels to process, the control circuit may determine that a glare condition is not present in the image at 824, and the glare detection procedure 800 may exit.

If, at 818, the control circuit determines that the luminance L_(P) of the pixel is greater than the glare condition luminance threshold L_(TH), the control circuit may determine that a glare condition is present at 826 and store the location of the glare condition (e.g., the location of the pixel) at 828, before the glare detection procedure 800 exits. The location of the glare condition may be used to determine a position of the motorized window treatment and/or a critical glare condition. The critical glare condition may be the highest or lowest glare condition detected in the image. The critical glare condition may be the lowest glare condition in the image for shades that lower from and raise to a window treatment mounted at the top of the window. The critical glare condition may be the highest glare condition in the image for shades that raise from and lower to a motorized window treatment mounted at the bottom of the window.

The control circuit may execute the glare detection procedure 800 multiple times to process an image at multiple resolutions to detect different glare conditions. The processing of different resolution images may allow the control circuit to appropriately detect glare conditions due to small high-intensity glare sources and/or large low-intensity glare sources. The control circuit may use a different glare condition luminance threshold L_(TH) when processing the image at each of the different resolutions. For example, small glare sources may be more easily detected in a higher resolution image because there are more pixels in the image. Since glare conditions may be caused due to a small glare source having a high intensity, the glare condition luminance threshold L_(TH) used to detect the glare conditions in a high resolution image may be higher (e.g., a higher pixel intensity may trigger the detection of a glare condition). The small glare sources may be less easily detected in a lower resolution images (e.g., the small glare sources may be removed from and/or filtered out of the lower resolution image), which may allow a large low intensity glare source to be detected. Since glare conditions may also be caused due to a large glare source having a low intensity, the glare condition luminance threshold L_(TH) used to detect the glare conditions in a low resolution image may be lower (e.g., a lower pixel intensity may trigger the detection of a glare condition).

FIG. 9 shows a flowchart of another example glare detection procedure 900 (e.g., a luminance-based glare detection procedure) for processing an image to detect a glare condition. The glare detection procedure 900 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., system controller 110). For example, the glare detection procedure 900 may be executed at 716 of the glare prevention procedure 700 shown in FIG. 7.

The glare detection procedure 900 may begin at 910. One or more neighboring pixels having similar intensities may be grouped together to form a group of pixels. Pixel groups may be dynamically sized and/or shaped. Dynamically shaped and/or dynamically sized pixel groups may provide improved glare detection (e.g., as group shapes are not limited to a square of a certain size). At 912, the control circuit of the visible light sensor or the system controller may group one or more adjacent pixels having similar luminance (e.g., similar intensities). For example, when the control circuit of the visible light sensor or the system controller processes a pixel with a high luminance, the control circuit may look to group the surrounding pixels. Referring now to FIG. 6B, pixel 652 and its surrounding pixels may be grouped together (e.g., depending on whether a given surrounding pixel has a similar intensity). Similarly, pixel 656 and its surrounding pixels may be grouped together to form pixel group 658. Pixel 654, for example, may be a group of a single pixel (e.g., because the pixels surrounding pixel 608 do not have a similar intensity).

After the control circuit of the visible light sensor or the system controller groups surrounding pixels having similar intensities at 912, the control circuit may determine the lowest group in the image at 914. For example, the lowest group may be the group of pixels having one or more pixels closest to the bottom portion of the image (e.g., pixel 652 and its surrounding pixels as shown in FIG. 6B). After the determining the lowest group in the image, the control circuit may determine the size of the group at 916. The size of the group may be a function of the number of the pixels in the group, the shape of the group, and/or the size of the individual pixels in the group. The size of the group may be used to determine if the group of pixels present a glare condition. For example, the size of the group may be used to determine a group glare condition threshold.

Glare conditions may be caused to small high-intensity glare sources and/or large low-intensity glare sources. At 918, the control circuit of the visible light sensor or the system controller may determine a group glare condition luminance threshold L_(TH) based on the group size. For example, large groups may have a lower group glare condition threshold (e.g., to detect glare conditions due to large low-intensity glare sources), and small groups may have larger group glare condition thresholds (e.g., to detect glare conditions due to small high-intensity glare sources). For example, the pixel group 658 including pixel 656 may have the smallest group glare condition threshold, and the pixel group including pixel 654 may have the largest group glare condition of the pixel groups shown in FIG. 6B. Determining the group glare condition luminance threshold L_(TH) based on the group size may allow for the control circuit of the visible light sensor to avoid the detection of pixels groups that do not present glare conditions, while continuing to detect pixel groups that present glare conditions (e.g., as the group size and/or threshold may be smaller).

At 920, the control circuit may determine a representative group luminance L_(GRP). The representative group luminance L_(GRP) may provide the control circuit of the visible light sensor a luminance that represents the values of the luminance L_(P) of the pixels in the group (e.g., each of the pixels in the group). Determining a representative group luminance L_(GRP) for the pixels in the group may increase glare detection efficiency (e.g., because the control circuit may process the group using the representative group luminance L_(GRP), rather than processing luminance values for each pixel in the group). For example, the representative group luminance L_(GRP) may be an average, mean, or median value of the luminance values of the pixels in the group. The representative group luminance L_(GRP) may be the maximum or minimum value of the luminance values of the pixels in the group. The representative group luminance L_(GRP) may be determined in multiple ways (e.g., in any way that represents an aggregate of the values of the luminance L_(P) of the pixels in the group).

The control circuit of the visible light sensor or the system controller may detect glare conditions in an efficient manner. The control circuit may begin processing groups of pixels in a location relative to the fully closed position of a motorized window treatment. For example, if a motorized window treatment is located at a top of the window and lowers a shade fabric towards the bottom of the window (e.g., to a fully closed position), the control circuit of the visible light sensor may begin detecting glare conditions from the lowest group of pixels. At 922, the control circuit of the visible light sensor or the system controller may process the lowest group of pixels to detect a glare condition by comparing the representative group luminance and the group glare condition threshold. If the representative group luminance is greater than the group glare condition threshold, the control circuit of the visible light sensor or the system controller may determine that a glare condition is present at 924. The control circuit may store the location of the glare condition (e.g., the lowest pixel in the group) at 926, and the glare detection procedure 900 may exit.

When a representative group luminance is greater than a group glare condition threshold, the control circuit of the visible light sensor may stop detecting glare conditions, which may improve the efficiency of glare detection (e.g., because the control circuit may stop processing the groups remaining in the image once a glare condition is detected). For example, if, at 922, the representative group luminance is not greater than the group glare condition threshold, the control circuit of the visible light sensor or system controller may determine if there are additional groups in the image at 928. If, at 928, additional groups are in the image, the control circuit may determine the next lowest group in the image at 930. Alternatively, if additional groups are not present in the image, the control circuit or system controller may determine that a glare condition is not present in the image at 932 and the glare detection procedure 900 may exit.

FIG. 10 shows a flowchart of another example glare detection procedure 1000 (e.g., a illuminance-based glare detection procedure) for processing an image to detect a glare condition. The glare detection procedure 1000 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., system controller 110). For example, the glare detection procedure 1000 may be executed at 716 of the glare prevention procedure 700 shown in FIG. 7.

The glare detection procedure 1000 may begin at 1010. At 1012, a total illuminance E_(TOT) for the image is initialized to zero. At 1014, the control circuit may begin processing a first pixel in the image. For example, the pixel may be located at a predetermined location in the image, such as a bottom portion (e.g., a bottom row of pixels) or top portion (e.g., a top row of pixels) of the image. The control circuit may begin processing the image at a pixel that is located at a bottom right-hand corner or a bottom left-hand corner of the image for shades that lower from and raise to a window treatment mounted at the top of the window.

The control circuit may then process the pixel to attempt to detect a glare condition. For example, the control circuit may determine a luminance L_(P) of the pixel at 1016. For example, if the retrieved image is an HDR image, the control circuit may retrieve the luminance L_(P) of the pixel from the data of the HDR image at 1016. The control circuit may also calculate the luminance L_(P) of the pixel (e.g., using Equation 4 shown above) at 1016. At 1018, the control circuit may determine an pixel angle θ_(P) of the pixel. For example, the pixel angle θ_(P) may be an angle between a vector directed towards a location of the pixel and a vector that is normal to the fish-eye lens of the visible light sensor. The pixel angle θ_(P) may be dependent upon a type of the fish-eye lens of the visible light sensor and/or an orientation of the visible light sensor when mounted to the window. The pixel angle θ_(P) may be stored in memory. For example, the control circuit may simply retrieve the pixel angle θ_(P) from memory based on the present pixel at 1018. At 1020, the control circuit may determine an illuminance contribution E_(P) of the pixel. For example, the control circuit may calculate the illuminance contribution E_(P) of the pixel using the luminance L_(P) and the pixel angle θ_(P) of the pixel, e.g., E_(P)=(2π/N_(P))·L_(P)·cos(θ_(P)), where N_(P) is the total number of pixels in the image being processed. At 1022, the total illuminance E_(TOT) of the image may be updated by adding the illuminance contribution E_(P) (e.g., as determined at 1020) to the total illuminance E_(TOT), e.g., E_(TOT)=E_(TOT)+E_(P).

If, at 1024, the total illuminance E_(TOT) of the image is less than a glare condition illuminance threshold E_(TH) (e.g., a glare condition due to the total illuminance E_(TOT) in the image is not present), the control circuit may determine if there are additional pixels to process at 1026. If there are additional pixels to process at 1026, the control circuit may move to a next pixel at 1028 and process the next pixel to attempt to detect a glare condition. When the control circuit moves onto the next pixel at 1028, the control circuit may move to the pixel adjacent to the previous pixel in the present row of pixels (e.g., to the left or the right of the previous pixel). When the control circuit has processed each pixel in a row, the control circuit may move up to the next row of pixels. In this way, the control circuit may step through multiple pixels in the non-warped image by starting at the bottom row and moving up through the rows of the image. If there are not additional pixels to process, the control circuit may determine that a glare condition is not present in the image at 1026, and the glare detection procedure 1000 may exit.

If the control circuit determines that the luminance L_(P) of the pixel is greater than (e.g., greater than or equal to) the glare condition illuminance threshold E_(TH) at 1024, the control circuit may determine that a glare condition is present at 1032 and store the location of the glare condition (e.g., the location of the pixel) at 1034, before the glare detection procedure 1000 exits. The location of the glare condition may be used to determine a position of the motorized window treatment for preventing a glare condition in the space. The glare condition stored at 1034 may be the highest or lowest glare condition detected in the image (e.g., a critical glare condition). The glare condition may be the lowest glare condition in the image for shades that lower from and raise to a window treatment mounted at the top of the window. The glare condition may be the highest glare condition in the image for shades that raise from and lower to a motorized window treatment mounted at the bottom of the window.

While the glare detection procedures 800-1000 of FIGS. 8-10 are described herein with the control circuit processing the non-warped image starting at the bottom portion (e.g., a bottom row) and working up through the rows of the image, the procedure may be reversed when the room 102 includes motorized window treatments that are bottom-up window treatments, e.g., the window treatment fabric moves from the bottom of the window to the top to cover the window. For example, when the motorized window treatments are bottom-up window treatments, the glare detection procedures 800-1000 may process the image starting at the top portion (e.g., a top row) and work down through the rows of the image, e.g., until a glare source is detected.

After the existence of a glare condition is determined using a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000 of FIGS. 8-10), the control circuit that performed the glare detection procedure (e.g., the control circuit of the visible light sensor and/or the system controller) may transmit one or more messages to the motorized window treatment. The messages may include control instructions that instruct the motorized window treatment to adjust the position of the motorized window treatment (e.g., the position of the window treatment fabric of the motorized window treatment) by a given amount. For example, the control instructions may instruct the motorized window treatment to lower the position of the motorized window treatment until the glare condition is eliminated.

The light entering a space (e.g., the area in which the motorized window treatment is located) from outside of the space may change relatively often. The desired position (e.g., the position of the motorized window treatment determined by the glare detection procedure) may therefore also change relatively often. The change in the desired position over a relatively short period of time may be small, and may result in a negligible difference in the lighting within the space. Adjusting the position of the motorized window treatment relatively often may therefore be undesirable and/or distracting to an occupant of the space. One or more procedures disclosed herein may be used to determine whether to adjust a position following detection of a glare condition.

While the procedures 1100-1500 of FIGS. 11-15 are described herein with the position of the motorized window treatment raising to allow more light into an area and lowering to allow less light into the area, the procedure may be reversed when the room 102 includes motorized window treatments that are bottom-up window treatments, e.g., the window treatment fabric moves from the bottom of the window to the top to cover the window. For example, when the motorized window treatments are bottom-up window treatments, the procedures 1100-1500 may lower the position of the motorized window treatment to allow more light into the area and raise the position of the motorized window treatment to allow less light into the area.

FIG. 11 is an example flowchart of an adjustment procedure 1100 that may be used to adjust a position of a motorized window treatment (e.g., the position of the window treatment fabric 152 controlled by the motorized window treatment 150) based on one or more thresholds. The adjustment procedure 1100 may be performed after a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000) has been performed. The adjustment procedure 1100 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., the system controller 110). The adjustment procedure 1100 may be executed as part of a glare prevention procedure (e.g., the glare prevention procedure 700 shown in FIG. 7). For example, the adjustment procedure 1100 may be executed at 730 of the glare prevention procedure 700.

The adjustment procedure 1100 may begin at 1110. At 1112, the control circuit may determine a desired position P_(DES) of a motorized window treatment. The control circuit may determine the desired position P_(DES) of the motorized window treatment based on the analysis of an image of a space outside of a window which the motorized window treatment is covering. For example, the control circuit may determine that a glare condition is present (e.g., at 826, 924, or 1032 of the glare detection procedures 800, 900, and 1000 respectively), and may store the location of the glare condition (e.g., the location of a pixel) (e.g., at 828, 926, or 1034 of the glare detection procedures 800, 900, and 1000 respectively). The control circuit may determine a profile angle A_(PI) based on the location of the glare condition (e.g., at 726 of the glare prevention procedure 700). The control circuit may then determine the desired position P_(DES) by determining the position of the motorized window treatment that will cover the profile angle A_(PI) (e.g., at 728 of the glare prevention procedure 700).

After the control circuit has determined the desired position P_(DES) at 1112, the control circuit may determine a difference ΔP between the desired position P_(DES) and a present position P_(PRES) at 1114. A given position of the motorized window treatment (e.g., the desired position P_(DES) and/or the present position P_(PRES)) may be represented as a numerical value, for example as a distance from a fully-closed position (e.g., a lowest possible position of a hembar to which the window treatment fabric of the motorized window treatment is attached) of the motorized window treatment. For example, the fully-closed position may be represented as having a numerical value of zero, and the numerical value of the position may increase as the distance of position from the fully-closed position increases. In an example, the fully-open position may be represented as having a numerical value of 100 or 255. The difference ΔP may therefore be calculated based on the numerical values of the desired position P_(DES) and the present position P_(PRES). For example, as shown in FIG. 11, the control circuit may determine the difference ΔP by subtracting the present position P_(PRES) from the desired position P_(DES). The difference ΔP may be a positive value if the desired position P_(DES) is higher than the present position P_(PRES) (e.g., the motorized window treatment is to be raised) and a negative value if the desired position P_(DES) is lower than the present position P_(PRES) (e.g., the motorized window treatment is to be lowered).

At 1116, the control circuit may determine whether the difference ΔP is greater than or equal to a raise threshold TH_(RAISE). For example, the raise threshold TH_(RAISE) may be a positive value. The raise threshold TH_(RAISE) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the raise threshold TH_(RAISE) may be predefined in memory or may be defined by an occupant of the area and subsequently stored in memory. The raise threshold TH_(RAISE) may be approximately equal to 5% of the maximum length of the motorized window treatment. The value of the raise threshold TH_(RAISE) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. If the control circuit determines that the difference ΔP is greater than or equal to the raise threshold TH_(RAISE), the control circuit may transmit a command (e.g., a shade control command) to the motorized window treatment at 1120 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After the control circuit transmits the shade control command to the motorized window treatment, the adjustment procedure 1100 may exit.

If the control circuit determines at 1116 that the difference ΔP is not greater than the raise threshold TH_(RAISE), the control circuit may determine whether the difference ΔP is less than or equal to a lower threshold TH_(LOWER) at 1118. For example, the lower threshold TH_(LOWER) may be a negative value. The lower threshold TH_(LOWER) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the lower threshold TH_(LOWER) may be predefined at the control circuit or may be defined by an occupant of the area. The lower threshold TH_(LOWER) may be approximately equal to 1% of the maximum length of the motorized window treatment. The value of the lower threshold TH_(LOWER) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the lower threshold TH_(LOWER) may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the lower threshold TH_(LOWER) may also dynamically change as well. The control circuit may have one or more associations between factors and associated values for the lower threshold TH_(LOWER) (e.g., and/or the raise threshold TH_(RAISE)) stored in memory. For example, if the control circuit determines the profile angle A_(PI) at 1112, the control circuit may determine the value for the lower threshold TH_(LOWER) by performing a lookup in a table that correlates one or more profile angles with associated lower threshold values. Alternatively, the control circuit may calculate the value of the lower threshold TH_(LOWER) (e.g., and/or the raise threshold TH_(RAISE)) using a formula, and/or may receive the value of the lower threshold TH_(LOWER) (e.g., and/or the raise threshold TH_(RAISE)) from a network device (e.g., a system controller). If the control circuit determines that the difference ΔP is greater than the lower threshold TH_(LOWER), the adjustment procedure 1100 may exit (e.g., without the control circuit transmitting a shade control command). If the control circuit determines that the difference ΔP is less than or equal to the lower threshold TH_(LOWER), the control circuit may transmit a shade control command to the motorized window treatment at 1120 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After the control circuit transmits the shade control command to the motorized window treatment, the adjustment procedure 1100 may exit.

As shown in FIG. 11, a control circuit may determine whether to adjust a position of a motorized window treatment after a glare condition is detected based on the difference between a present position and a desired position of the motorized window treatment. Additionally and/or alternatively, the control circuit may determine whether to adjust the position of the motorized window treatment based on the amount of time that has passed since the position of the motorized window treatment was last adjusted. The determination of whether to adjust the position of the motorized window treatment may further depend on whether the desired position is higher or lower than the present position. For example, as shown in FIG. 12, before transmitting a command to raise the position of the motorized window treatment, the control circuit may determine whether a given amount of time has passed since the position was last raised. This may be used in order to avoid making adjustments at a relatively high frequency. The control circuit may prioritize lowering the position of the motorized window treatment over raising the position of the motorized window treatment in order to avoid glare conditions. Thus, determining whether the given amount of time has passed may prevent the control circuit from creating a glare condition by raising the position of the motorized window treatment, and may limit the necessity of lowering the position of the motorized window treatment soon after raising the position.

FIG. 12 is an example flowchart of an adjustment procedure 1200 that may be used to determine whether to adjust a position of a motorized window treatment (e.g., the motorized window treatment 150) based on a timer (e.g., a raise timer). The adjustment procedure 1200 may be performed after a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000) has been performed. The adjustment procedure 1200 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., the system controller 110). The adjustment procedure 1200 may be executed as part of a glare prevention procedure (e.g., the glare prevention procedure 700 shown in FIG. 7). For example, the adjustment procedure 1200 may be executed at 730 of the glare prevention procedure 700. The adjustment procedure 1200 may be performed in addition to or as an alternative to the adjustment procedure 1100 shown in FIG. 11.

The adjustment procedure 1200 may begin at 1210. At 1212, the control circuit may determine a desired position P_(DES) of a motorized window treatment. The control circuit may determine the desired position P_(DES) of the motorized window treatment based on the analysis of an image of a space outside of a window which the motorized window treatment is covering. For example, the control circuit may determine that a glare condition is present (e.g., at 826, 924, or 1032 of the glare detection procedures 800, 900, and 1000 respectively), and may store the location of the glare condition (e.g., the location of a pixel) (e.g., at 828, 926, or 1034 of the glare detection procedures 800, 900, and 1000 respectively). The control circuit may determine a profile angle A_(PI) based on the location of the glare condition (e.g., at 726 of the glare prevention procedure 700). The control circuit may then determine the desired position P_(DES) by determining the position of the motorized window treatment that will cover the profile angle A_(PI) (e.g., at 728 of the glare prevention procedure 700).

At 1214, the control circuit may determine whether the desired position P_(DES) is higher than a present position P_(PRES) (e.g., whether the position of the motorized window treatment is to be raised). For example, the control circuit may determine a difference ΔP between the desired position P_(DES) and the present position P_(PRES) as described herein. The control circuit may determine that the desired position P_(DES) is higher than the present position P_(PRES) if the difference ΔP is a positive value. If the control circuit determines that the desired position P_(DES) is lower than the present position P_(PRES) (e.g., the position of the motorized window treatment is to be lowered), the adjustment procedure 1200 may proceed to 1222.

If the control circuit determines that the desired position P_(DES) is higher than the present position P_(PRES), the control circuit may determine whether a raise timer has started at 1216. The raise timer may be started after a previous instance of the adjustment procedure 1200. For example, the raise timer may be started when the position of the motorized window treatment is adjusted, and may run for a given amount of time before expiring. The raise timer may be used to avoid making adjustments at a relatively high frequency. The amount of time that the raise timer runs may be, for example, predefined in memory accessible to the control circuit and/or predefined by the user and stored in memory. The amount of time may change based on, for example, the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the amount of time may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the amount of time may also dynamically change as well. If the control circuit determines that the raise timer has not started at 1216, the control circuit may start the raise timer at 1218 and the adjustment procedure 1200 may exit. If the control circuit determines that the raise timer has started at 1216, the control circuit may determine whether the raise timer has expired at 1220. For example, the control circuit may determine whether the given amount of time has passed since the raise timer was started. If the control circuit determines that the raise timer has not expired, the control circuit may maintain the motorized window treatment at the present position P_(PRES), and the adjustment procedure 1200 may exit.

If the control circuit determines that the raise timer has expired, the control circuit may transmit a command (e.g., a shade control command) to the motorized window treatment at 1222 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise or lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After transmitting the shade control command, the control circuit may stop and/or reset the raise timer at 1224. The control circuit may restart the raise timer, and the adjustment procedure 1200 may exit.

A control circuit may determine whether a raise timer has expired before transmitting a command to raise the position of a motorized window treatment. For example, as shown in FIG. 12, the control circuit may transmit the command if the raise timer has expired (e.g., whether a raise delay period has passed since the position of the motorized window treatment was last raised). However, the control circuit may additionally or alternatively determine whether the space in which the motorized window treatment is located is vacant before transmitting the command. For example, as shown in FIGS. 13A and 13B, the control circuit may determine whether the raise timer has expired and store to memory the command to raise the position of the motorized window treatment. The control circuit may then determine whether the space is vacant, and may transmit the command if the space is vacant. Checking the vacancy condition of the space may result in a better user experience for an occupant of the space, as raising the shades too often while the user is in the space may be distracting to the occupant.

FIG. 13A is an example flowchart of an adjustment procedure 1300 that may be used to adjust a position of a motorized window treatment (e.g., the motorized window treatment 150) based on a timer (e.g., a raise timer). The adjustment procedure 1300 may be performed after a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000) has been performed. The adjustment procedure 1300 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., the system controller 110). The adjustment procedure 1300 may be executed as part of a glare prevention procedure (e.g., the glare prevention procedure 700 shown in FIG. 7). For example, the adjustment procedure 1300 may be executed at 730 of the glare prevention procedure 700. The adjustment procedure 1300 may be performed in addition to or as an alternative to the adjustment procedure 1100 shown in FIG. 11 and/or the adjustment procedure 1200 shown in FIG. 12.

The adjustment procedure 1300 may begin at 1310. At 1312, the control circuit may determine a desired position P_(DES) of a motorized window treatment. The control circuit may determine the desired position P_(DES) of the motorized window treatment based on the analysis of an image of a space outside of a window which the motorized window treatment is covering. For example, the control circuit may determine that a glare condition is present (e.g., at 826, 924, or 1032 of the glare detection procedures 800, 900, and 1000 respectively), and may store the location of the glare condition (e.g., the location of a pixel) (e.g., at 828, 926, or 1034 of the glare detection procedures 800, 900, and 1000 respectively). The control circuit may determine a profile angle A_(PI) based on the location of the glare condition (e.g., at 726 of the glare prevention procedure 700). The control circuit may then determine the desired position P_(DES) by determining the position of the motorized window treatment that will cover the glare condition while taking into account the profile angle A_(PI) (e.g., at 728 of the glare prevention procedure 700).

At 1314, the control circuit may determine whether the desired position P_(DES) is higher than a present position P_(PRES) (e.g., whether the position of the motorized window treatment is to be raised). For example, the control circuit may determine a difference ΔP between the desired position P_(DES) and the present position P_(PRES) as described herein. The control circuit may determine that the determined position P_(DES) is higher than the present position P_(PRES) if the difference ΔP is a positive value. If the control circuit determines that the desired position P_(DES) is lower than the present position P_(PRES) (e.g., the position of the motorized window treatment is to be lowered), the control circuit may transmit a command (e.g., a shade control command, such as a lower command) to the motorized window treatment (e.g., via a system controller) at 1316. The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After the control circuit transmits the shade control command to the motorized window treatment, the adjustment procedure 1300 may proceed to 1326.

If the control circuit determines that the desired position P_(DES) is higher than the present position P_(PRES) (e.g., the position of the motorized window treatment is to be raised) at 1314, the control circuit may determine whether a raise timer has started at 1318. The raise timer may be started after a previous instance of the adjustment procedure 1300. For example, the raise timer may be started when the position of the motorized window treatment is adjusted, and may run for a defined amount of time before expiring. The raise timer may be used to avoid making adjustments at a relatively high frequency. The amount of time that the raise timer runs may be, for example, predefined in memory accessible to the control circuit and/or predefined by the occupant and stored in memory. The amount of time may change based on, for example, the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the amount of time may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the amount of time may also dynamically change as well. If the control circuit determines that the raise timer has not started at 1318, the control circuit may start the raise timer at 1320 and the adjustment procedure 1300 may exit. If the control circuit determines that the raise timer has started at 1318, the control circuit may determine whether the raise timer has expired at 1322. For example, the control circuit may determine whether the given amount of time has passed since the raise timer was started. If the control circuit determines that the raise timer has not expired at 1322, the control circuit may maintain the present position, and the adjustment procedure 1300 may exit.

If the control circuit determines that the raise timer has expired at 1322, the control circuit may store a command (e.g., a shade control command, such as a raise command) in memory at 1324 for later transmission to the motorized window treatment (e.g., at 1358 of the procedure 1350). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise or lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After storing the shade control command, the control circuit may stop and/or reset the raise timer at 1326. The control circuit may restart the raise timer, and the adjustment procedure 1300 may exit.

As shown in FIG. 13A, as part of the adjustment procedure 1300, the shade control command (e.g., a raise command) may be stored for later transmission at 1324. After the adjustment procedure 1300 exits, the control circuit may determine whether to transmit the stored shade control command to the motorized window treatment. For example, as shown in FIG. 13B, the control circuit may determine whether to transmit the stored shade control command based on a vacancy condition of the area in which the motorized window treatment is located. For example, the control circuit may (e.g., periodically) determine the vacancy condition of the area, and may transmit the stored shade control command if the area is vacant. Waiting to transmit the shade control command until the area is vacant may avoid distracting any occupants of the area with noise or movement.

FIG. 13B is an example flowchart of a procedure 1350 that may be used to transmit a stored command (e.g., a stored shade control command) to adjust a position of a motorized window treatment (e.g., the motorized window treatment 150) based on a vacancy condition of the area in which the motorized window treatment is located. The procedure 1350 may be performed in conjunction with the adjustment procedure 1300 shown in FIG. 13A. The procedure 1350 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., system controller 110). The procedure 1350 may be executed when a raise timer expires (e.g., the raise timer started at 1320 of the adjustment procedure 1300). FIG.

The procedure 1350 may begin at 1352 (e.g., when the raise timer expires). At 1354, the control circuit may determine whether the area in which the motorized window treatment is located is vacant (e.g., whether one or more occupants are present in the area). If the control circuit determines that there is at least one occupant in the area at 1354, the procedure 1350 may exit. Because the automatic control of the control circuit may prioritize eliminating glare conditions, the control circuit may lower the position of the motorized window treatment relatively soon after raising the position, which may increase the frequency of adjustments. Thus, the control circuit may determine whether the area is vacant in order to minimize distractions to the occupant with noise and/or movement by raising the position of the motorized window treatment at a relatively high frequency. If the area is vacant, the control circuit may perform adjustments to the position of the motorized window treatment without distracting the occupant.

If the control circuit determines that the area is vacant at 1354 (e.g., there are no occupants detected in the area), the control circuit may determine whether there is command (e.g., a shade control command, such as a raise command) stored in memory at 1356. For example, the shade control command may instruct the motorized window treatment to raise the position of the motorized window treatment. The control circuit may store a shade control command as part of an adjustment procedure. For example, the control circuit may store the shade control command at 1324 of the adjustment procedure 1300. If the control circuit determines that there is no shade control command stored in memory at 1356, the procedure 1350 may exit. If the control circuit determines that there is a shade control command stored in memory, the control circuit may transmit the shade control command to the motorized window treatment at 1358 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After the control circuit transmits the shade control command at 1358, the procedure 1350 may exit.

As described herein, after determining that a glare condition exists, a control circuit may determine whether to adjust the position of a motorized window treatment from a present position to a desired position. The control circuit may perform one or more procedures in order to determine whether to adjust the position of the motorized window treatment. For example, as shown in FIG. 11, the control circuit may determine whether a difference between the present position and the desired position is greater than a raise threshold or less than a lower threshold. In another example, as shown in FIG. 12, the control circuit may determine whether a raise timer has expired before transmitting a command to raise the position of the motorized window treatment. However, the examples shown are not mutually exclusive, and may be combined. For example, as shown in FIG. 14, the control circuit may use the raise and lower thresholds in addition to the raise timer to determine whether to adjust the position of the motorized window treatment. Using this combination may reduce the frequency of adjustments more than using either one of the examples shown in FIGS. 11 and 12 alone.

FIG. 14 is an example flowchart of an adjustment procedure 1400 that may be used to adjust a position of a motorized window treatment (e.g., the motorized window treatment 150) based on one or more thresholds and a timer (e.g., a raise timer). The adjustment procedure 1400 may be performed after a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000) has been performed. The adjustment procedure 1400 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., system controller 110). The adjustment procedure 1400 may be executed as part of a glare prevention procedure (e.g., the glare prevention procedure 700 shown in FIG. 7). For example, the adjustment procedure 1400 may be executed at 730 of the glare prevention procedure 700.

The adjustment procedure 1400 may begin at 1410. At 1412, the control circuit may determine a desired position P_(DES) of a motorized window treatment. The control circuit may determine the desired position P_(DES) of the motorized window treatment based on the analysis of an image of a space outside of a window which the motorized window treatment is covering. For example, the control circuit may determine that a glare condition is present (e.g., at 826, 924, or 1032 of the glare detection procedures 800, 900, and 1000 respectively), and may store the location of the glare condition (e.g., the location of a pixel) (e.g., at 828, 926, or 1034 of the glare detection procedures 800, 900, and 1000 respectively). The control circuit may determine a profile angle A_(PI) based on the location of the glare condition (e.g., at 726 of the glare prevention procedure 700). The control circuit may then determine the desired position P_(DES) by determining the position of the motorized window treatment that will cover the profile angle A_(PI) (e.g., at 728 of the glare prevention procedure 700).

After the control circuit has determined the desired position P_(DES) at 1412, the control circuit may determine a difference ΔP between the desired position P_(DES) and a present position P_(PRES) at 1414. A given position of the motorized window treatment (e.g., the desired position P_(DES) and/or the present position P_(PRES)) may be represented as a numerical value, for example as a distance from a fully-closed position (e.g., a lowest possible position of a hembar to which the window treatment fabric of the motorized window treatment is attached) for the motorized window treatment. For example, the fully-closed position may be represented as having a numerical value of zero, and the numerical value of the position may increase as the distance of position from the fully-closed position increases. In an example, the fully-open position may be represented as having a numerical value of 100 or 255. The difference ΔP may therefore be calculated based on the numerical values of the desired position P_(DES) and the present position P_(PRES). For example, as shown in FIG. 14, the control circuit may determine the difference ΔP by subtracting the present position P_(PRES) from the desired position P_(DES). The difference ΔP may be a positive value if the desired position P_(DES) is higher than the present position P_(PRES) (e.g., the motorized window treatment is to be raised) and a negative value if the desired position P_(DES) is lower than the present position P_(PRES) (e.g., the motorized window treatment is to be lowered).

At 1416, the control circuit may determine whether the difference ΔP is greater than or equal to a raise threshold TH_(RAISE). For example, the raise threshold TH_(RAISE) may be a positive value. The raise threshold TH_(RAISE) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the raise threshold TH_(RAISE) may be predefined in memory or may be defined by an occupant of the area and subsequently stored in memory. The value of the raise threshold TH_(RAISE) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. If the control circuit determines at 1416 that the difference ΔP is less than the raise threshold TH_(RAISE), the control circuit may determine whether the difference ΔP is less than or equal to a lower threshold TH_(LOWER) at 1418. For example, the lower threshold TH_(LOWER) may be a negative value. The lower threshold TH_(LOWER) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the lower threshold TH_(LOWER) may be predefined at the control circuit or may be defined by an occupant of the area. The value of the lower threshold TH_(LOWER) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the lower threshold TH_(LOWER) may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the lower threshold TH_(LOWER) may also dynamically change as well. If the control circuit determines that the difference ΔP is greater than the lower threshold TH_(LOWER), the adjustment procedure 1400 may exit (e.g., without the control circuit transmitting a shade control command). If the control circuit determines that the difference ΔP is less than or equal to the lower threshold TH_(LOWER), the adjustment procedure 1400 may proceed to 1426.

If the control circuit determines that the difference ΔP is greater than or equal to the raise threshold TH_(RAISE) at 1416, the control circuit may determine whether a raise timer has started at 1420. The raise timer may be started after a previous instance of the adjustment procedure 1400. For example, the raise timer may be started when the position of the motorized window treatment is adjusted, and may run for a given amount of time before expiring. The raise timer may be used to avoid making adjustments at a relatively high frequency. The amount of time that the raise timer runs may be, for example, predefined in memory accessible to the control circuit and/or predefined by the occupant and stored in memory. The amount of time may change based on, for example, the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the amount of time may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the amount of time may also dynamically change as well. If the control circuit determines that the raise timer has not started at 1420, the control circuit may start the raise timer at 1422 and the adjustment procedure 1400 may exit. If the control circuit determines that the raise timer has started at 1420, the control circuit may determine whether the raise timer has expired at 1424. For example, the control circuit may determine whether the given amount of time has passed since the raise timer was started. If the control circuit determines that the raise timer has not expired at 1424, the control circuit may maintain the present position, and the adjustment procedure 1400 may exit.

If the control circuit determines that the raise timer has expired at 1426, or if the control circuit determines that the difference ΔP is less than or equal to the lower threshold TH_(LOWER), the control circuit may transmit a command (e.g., a shade control command) to the motorized window treatment at 1426 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise or lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After transmitting the shade control command, the control circuit may stop and/or reset the raise timer at 1428. The control circuit may restart the raise timer, and the adjustment procedure 1400 may exit.

As shown in FIG. 14, the control circuit may use thresholds and a raise timer to determine whether to adjust the position of a motorized window treatment after a glare condition is detected. However, the control circuit may use other factors to determine whether to adjust the position of the motorized window treatment, in addition to or alternative to the thresholds and the raise timer. For example, as shown in FIG. 15, the control circuit may determine whether to adjust the position of the motorized window treatment based on the time of day and/or the vacancy condition of the area in which the motorized window treatment is located. As described herein, the thresholds and/or the raise timer may be to reduce the amount of adjustments made while an occupant is in the area. However, if there is no occupant in the area, the control circuit may avoid reducing the amounts of adjustments made. Therefore, the control circuit may determine whether there is an occupant in the area as part of a procedure to adjust the position of the motorized window treatment.

FIG. 15 is an example flowchart of an adjustment procedure 1500 that may be used to adjust a position of a motorized window treatment (e.g., the motorized window treatment 150) based on one or more thresholds, a timer, and a vacancy condition of an area in which the motorized window treatment is located. The adjustment procedure 1500 may be performed after a glare detection procedure (e.g., one or more of the glare detection procedures 800-1000) has been performed. The adjustment procedure 1500 may be executed by a control circuit of a visible light sensor (e.g., the control circuit 210 of the visible light sensor 200) or a system controller (e.g., system controller 110). The adjustment procedure 1500 may be executed as part of a glare prevention procedure (e.g., the glare prevention procedure 700 shown in FIG. 7). For example, the adjustment procedure 1500 may be executed at 730 of the glare prevention procedure 700.

The adjustment procedure 1500 may begin at 1510. At 1512, the control circuit may determine whether a manual override has occurred. For example, the control circuit may determine that a manual override has occurred if the control circuit receives an indication (e.g., via a mobile device, a remote control device, and/or a system controller) that an occupant of the area in which the motorized window treatment is located has manually adjusted the position of the motorized window treatment. For example, the occupant may press a button on a control device (e.g., a mobile device and/or a remote control device), and the control device may transmit a corresponding command to the motorized window treatment instructing the motorized window treatment to adjust the position of the motorized window treatment. If the control circuit determines that a manual override of the automatic control has occurred, the position of the motorized window treatment may be adjusted according to the command and the adjustment procedure 1500 may exit.

If the control circuit determines that a manual override has not occurred at 1512, the control circuit may determine a desired position P_(DES) of the motorized window treatment. The control circuit may determine the desired position P_(DES) based on the analysis of an image of a space outside of a window which the motorized window treatment is covering. For example, the control circuit may determine that a glare condition is present (e.g., at 826, 924, or 1032 of the glare detection procedures 800, 900, and 1000 respectively), and may store the location of the glare condition (e.g., the location of a pixel) (e.g., at 828, 926, or 1034 of the glare detection procedures 800, 900, and 1000 respectively). The control circuit may determine a profile angle A_(PI) based on the location of the glare condition (e.g., at 726 of the glare prevention procedure 700). The control circuit may then determine the desired position P_(DES) by determining the position of the motorized window treatment that will cover the profile angle A_(PI) (e.g., at 728 of the glare prevention procedure 700).

After the control circuit has determined the desired position P_(DES) at 1514, the control circuit may determine a difference ΔP between the desired position P_(DES) and a present position P_(PRES) at 1516. A given position of the motorized window treatment (e.g., the desired position P_(DES) and/or the present position P_(PRES)) may be represented as a numerical value, for example as a distance from a fully-closed position (e.g., a lowest possible position of a hembar to which the window treatment fabric of the motorized window treatment is attached) for the motorized window treatment. For example, the fully-closed position may be represented as having a numerical value of zero, and the numerical value of the position may increase as the distance of position from the fully-closed position increases. In an example, the fully-open position may be represented as having a numerical value of 100 or 255. The difference ΔP may therefore be calculated based on the numerical values of the desired position P_(DES) and the present position P_(PRES). For example, as shown in FIG. 15, the control circuit may determine the difference ΔP by subtracting the present position P_(PRES) from the desired position P_(DES). The difference ΔP may be a positive value if the desired position P_(DES) is higher than the present position P_(PRES) (e.g., the motorized window treatment is to be raised) and a negative value if the desired position P_(DES) is lower than the present position P_(PRES) (e.g., the motorized window treatment is to be lowered).

At 1518, the control circuit may determine whether the present time is within an afterhours period. The afterhours period may be a period in which it is less likely that there will be an occupant in the area. For example, the afterhours period may occur during times outside of normal business hours (e.g., 9 AM to 5 PM). For example, the afterhours period may run from 5 PM to 9 AM the next day during the week, and all day on weekends. The times that define afterhours period may be predefined in memory accessible to the control circuit and/or predefined by the occupant and stored in memory. For example, the control circuit may prompt the occupant to define the afterhours period (e.g., at installation), for example via a mobile device. If the control circuit determines at 1518 that the current time is within the afterhours period, the adjustment procedure 1500 may proceed to 1540.

If the control circuit determines at 1518 that the current time is outside the afterhours period, the control circuit may determine whether the difference ΔP is greater than or equal to a raise threshold TH_(RAISE) at 1520. For example, the raise threshold TH_(RAISE) may be a positive value. The raise threshold TH_(RAISE) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the raise threshold TH_(RAISE) may be predefined in memory or may be defined by an occupant of the area and subsequently stored in memory. The value of the raise threshold TH_(RAISE) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. If the control circuit determines that the difference ΔP is greater than or equal to the raise threshold TH_(RAISE) at 1520, the control circuit may determine whether vacancy is a condition in order for the position of the motorized window treatment to be raised at 1522. For example, the control circuit may determine whether vacancy is a condition in order for the position of the motorized window treatment to be raised by checking the value of a corresponding flag. The value of the flag may be stored in the memory of the control circuit. The value of the flag may be set and/or modified by an occupant of the area (e.g., a user of a mobile device). Alternatively, the control circuit may receive an indication of the value from, for example, a system controller. If the control circuit determines at 1522 that vacancy is a condition required in order for the position of the motorized window treatment to be raised, the adjustment procedure 1500 may proceed to 1538.

If the control circuit determines at 1522 that the position of the motorized window treatment can be raised without a vacancy condition, the control circuit may determine whether a raise timer has started at 1524. The raise timer may be started after a previous instance of the adjustment procedure 1500. For example, the raise timer may be started when the position of the motorized window treatment is adjusted, and may run for a given amount of time before expiring. The raise timer may be used to avoid making adjustments at a relatively high frequency. The amount of time that the raise timer runs may be, for example, predefined in memory accessible to the control circuit and/or predefined by the occupant and stored in memory. The amount of time may change based on, for example, the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the amount of time may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the amount of time may also dynamically change as well. If the control circuit determines that the raise timer has not started at 1524, the control circuit may start the raise timer at 1526 and the adjustment procedure 1500 may exit. If the control circuit determines that the raise timer has started at 1524, the control circuit may determine whether the raise timer has expired at 1528. For example, the control circuit may determine whether the given amount of time has passed since the raise timer was started. If the control circuit determines that the raise timer has not expired, the control circuit may maintain the present position, and the adjustment procedure 1500 may exit.

If the control circuit determines that the raise timer has expired at 1528, the control circuit may transmit a command (e.g., a shade control command, such as a raise command) to the motorized window treatment at 1530 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise the position to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After transmitting the shade control command, the control circuit may stop and/or reset the raise timer at 1534. The control circuit may restart the raise timer, and the adjustment procedure 1500 may exit.

If the control circuit determines at 1520 that the difference ΔP is less than the raise threshold TH_(RAISE), the control circuit may determine whether the difference ΔP is less than or equal to a lower threshold TH_(LOWER) at 1534. For example, the lower threshold TH_(LOWER) may be a negative value. The lower threshold TH_(LOWER) may be used to avoid making relatively small adjustments at a relatively high frequency. The value of the lower threshold TH_(LOWER) may be predefined at the control circuit or may be defined by an occupant of the area. The value of the lower threshold TH_(LOWER) may be dependent on one or more factors, for example the time of day, the physical location of the motorized window treatment, the profile angle A_(PI), etc. For example, the lower threshold TH_(LOWER) may decrease as the profile angle A_(PI) decreases. Because the profile angle A_(PI) changes dynamically over the course of a day, the lower threshold TH_(LOWER) may also dynamically change as well. If the control circuit determines that the difference ΔP is greater than the lower threshold TH_(LOWER), the adjustment procedure 1500 may proceed to 1538.

If the control circuit determines that the difference ΔP is less than or equal to the lower threshold TH_(LOWER), the control circuit may determine whether vacancy is a condition in order for the position of the motorized window treatment to be adjusted at 1536. For example, the control circuit may determine whether vacancy is a condition in order for the position of the motorized window treatment to be adjusted by checking the value of a corresponding flag. The value of the flag may be stored in the memory of the control circuit. Alternatively, the control circuit may receive an indication of the value from, for example, a system controller. If the control circuit determines at 1536 that the position of the motorized window treatment can be adjusted without a vacancy condition, the adjustment procedure 1500 may proceed to 1540.

If the control circuit determines at 1536 that vacancy is a condition in order for the position of the motorized window treatment to be adjusted, or determines at 1522 that vacancy is a condition in order for the position of the motorized window treatment to be raised, the control circuit may determine whether the area is vacant at 1538. For example, the control circuit may receive an indication of an occupancy condition or vacancy condition from an occupancy sensor (e.g., a visible light sensor or a passive infrared (PIR) occupancy sensor) located within the area (e.g., via the system controller). Additionally or alternatively, the control circuit may determine whether the area is vacant based on a determination that there is a lack of mobile devices associated with occupants within the area. For example, the control circuit may determine whether the area is vacant based on the detection of radio-frequency signals received from the mobile devices (e.g., and/or the respective signal strengths of the radio frequency signals). If the control circuit determines at 1538 that there is at least one occupant in the area, the adjustment procedure 1500 may exit.

If the control circuit determines at 1538 that the area is vacant, or determines at 1536 that the position of the motorized window treatment can be adjusted without a vacancy condition, the control circuit may transmit a command (e.g., a shade control command) to the motorized window treatment at 1540 (e.g., via a system controller). The control circuit may transmit the shade control command as one or more messages containing control instructions that instruct the motorized window treatment to raise or lower the position of the motorized window treatment to the desired position P_(DES). The shade control command may include, for example, the desired position P_(DES) and/or the difference ΔP. After the control circuit transmits the shade control command to the motorized window treatment at 1540, the control circuit may determine whether the raise timer has started at 1542, and may reset and stop the raise timer at 1544 if the raise timer has started. The adjustment procedure 1500 may then exit.

FIG. 16 is a block diagram illustrating an example of a device 1600 capable of processing and/or communication in a load control system, such as the load control system 100 of FIG. 1A. In an example, the device 1600 may be a control device capable of transmitting or receiving messages. The control device may be in an input device, such as a sensor device 141 (e.g., an occupancy sensor or another sensor device), a visible light sensor 180, 182, a remote control device 170, or another input device capable of transmitting messages to load control devices or other devices in the load control system 100. The device 1600 may be a computing device, such as the mobile device 190, the system controller 110, the remote computing device 195, a processing device, a central computing device, or another computing device in the load control system 100.

The device 1600 may include a control circuit 1601 for controlling the functionality of the device 1600. The control circuit 1601 may include one or more general purpose processors, special purpose processors, conventional processors, digital signal processors (DSPs), microprocessors, integrated circuits, a programmable logic device (PLD), application specific integrated circuits (ASICs), or the like. The control circuit 1601 may perform signal coding, data processing, image processing, power control, input/output processing, or any other functionality that enables the device 1600 to perform as one of the devices of the load control system (e.g., load control system 100) described herein.

The control circuit 1601 may be communicatively coupled to a memory 1602 to store information in and/or retrieve information from the memory 1602. The memory 1602 may comprise a computer-readable storage media or machine-readable storage media that maintains a device dataset of associated device identifiers, network information, and/or computer-executable instructions for performing as described herein. For example, the memory 1602 may comprise computer-executable instructions or machine-readable instructions that include one or more portions of the procedures described herein. For example, the computer-executable instructions or machine-readable instructions may, when executed, cause the control circuit 1601 to perform one or more of the procedures 700, 800, 900, 1000, 1100, 1200, 1300, 1350, 1400, and/or 1500. The control circuit 1601 may access the instructions from memory 1602 for being executed to cause the control circuit 1601 to operate as described herein, or to operate one or more other devices as described herein. The memory 1602 may comprise computer-executable instructions for executing configuration software. For example, the computer-executable instructions may be executed to display a GUI for copying and pasting one or more settings as described herein. The computer-executable instructions may be executed to perform procedures 500 and/or 600 as described herein. Further, the memory 1602 may have stored thereon one or more settings and/or control parameters associated with the device 1600.

The memory 1602 may include a non-removable memory and/or a removable memory. The non-removable memory may include random-access memory (RAM), read-only memory (ROM), a hard disk, or any other type of non-removable memory storage. The removable memory may include a subscriber identity module (SIM) card, a memory stick, a memory card, or any other type of removable memory. The memory 1602 may be implemented as an external integrated circuit (IC) or as an internal circuit of the control circuit 1601.

The device 1600 may include one or more communication circuits 1604 that are in communication with the control circuit 1601 for sending and/or receiving information as described herein. The communication circuit 1604 may perform wireless and/or wired communications. The communication circuit 1604 may be a wired communication circuit capable of communicating on a wired communication link. The wired communication link may include an Ethernet communication link, an RS-485 serial communication link, a 0-10 volt analog link, a pulse-width modulated (PWM) control link, a Digital Addressable Lighting Interface (DALI) digital communication link, and/or another wired communication link. The communication circuit 1604 may be configured to communicate via power lines (e.g., the power lines from which the device 1600 receives power) using a power line carrier (PLC) communication technique. The communication circuit 1604 may be a wireless communication circuit including one or more RF or infrared (IR) transmitters, receivers, transceivers, and/or other communication circuits capable of performing wireless communications.

Though a single communication circuit 1604 may be illustrated, multiple communication circuits may be implemented in the device 1600. The device 1600 may include a communication circuit configured to communicate via one or more wired and/or wireless communication networks and/or protocols and at least one other communication circuit configured to communicate via one or more other wired and/or wireless communication networks and/or protocols. For example, a first communication circuit may be configured to communicate via a wired or wireless communication link, while another communication circuit may be capable of communicating on another wired or wireless communication link. The first communication circuit may be configured to communicate via a first wireless communication link (e.g., a wireless network communication link) using a first wireless protocol (e.g., a wireless network communication protocol, and the second communication circuit may be configured to communicate via a second wireless communication link (e.g., a short-range or direct wireless communication link) using a second wireless protocol (e.g., a short-range wireless communication protocol).

One of the communication circuits 1604 may comprise a beacon transmitting and/or receiving circuit capable of transmitting and/or receiving beacon messages via a short-range RF signal. The control circuit 1601 may communicate with beacon transmitting circuit (e.g., a short-range communication circuit) to transmit beacon messages. The beacon transmitting circuit may communicate beacons via RF communication signals, for example. The beacon transmitting circuit may be a one-way communication circuit (e.g., the beacon transmitting circuit is configured to transmit beacon messages) or a two-way communication circuit capable of receiving information on the same network and/or protocol on which the beacons are transmitted (e.g., the beacon transmitting circuit is configured to transmit and receive beacon messages). The information received at the beacon transmitting circuit may be provided to the control circuit 1601.

The control circuit 1601 may be in communication with one or more input circuits 1603 from which inputs may be received. The input circuits 1603 may be included in a user interface for receiving inputs from the user. For example, the input circuits 1603 may include an actuator (e.g., a momentary switch that may be actuated by one or more physical buttons) that may be actuated by a user to communicate user input or selections to the control circuit 1601. In response to an actuation of the actuator, the control circuit 1601 may enter an association mode, transmit association messages from the device 1600 via the communication circuits 1604, and/or receive other information (e.g., control instructions for performing control of an electrical load). In response to an actuation of the actuator, the control circuit may be configured to perform control by transmitting control instructions indicating the actuation on the user interface and/or the control instructions generated in response to the actuation. The actuator may include a touch sensitive surface, such as a capacitive touch surface, a resistive touch surface an inductive touch surface, a surface acoustic wave (SAW) touch surface, an infrared touch surface, an acoustic pulse touch surface, or another touch sensitive surface that is configured to receive inputs (e.g., touch actuations/inputs), such as point actuations or gestures from a user. The control circuit 1601 of the device 1600 may enter the association mode, transmit an association message, transmit control instructions, or perform other functionality in response to an actuation or input from the user on the touch sensitive surface.

The input circuits 1603 may include a sensing circuit (e.g., a sensor). The sensing circuit may be an occupant sensing circuit, a temperature sensing circuit, a color (e.g., color temperature) sensing circuit, a visible light sensing circuit (e.g., a camera), a daylight sensing circuit or ambient light sensing circuit, or another sensing circuit for receiving input (e.g., sensing an environmental characteristic in the environment of the device 1600). The control circuit 1601 may receive information from the one or more input circuits 1603 and process the information for performing functions as described herein.

The control circuit 1601 may be in communication with one or more output sources 1605. The output sources 1605 may include one or more indicators (e.g., visible indicators, such as LEDs) for providing indications (e.g., feedback) to a user. The output sources 1605 may include a display (e.g., a visible display) for providing information (e.g., feedback) to a user. The control circuit 1601 and/or the display may generate a graphical user interface (GUI) generated via software for being displayed on the device 1600 (e.g., on the display of the device 1600).

The user interface of the device 1600 may combine features of the input circuits 1603 and the output sources 1605. For example, the user interface may have buttons that actuate the actuators of the input circuits 1603 and may have indicators (e.g., visible indicators) that may be illuminated by the light sources of the output sources 1605. In another example, the display and the control circuit 1601 may be in two-way communication, as the display may display information to the user and include a touch screen capable of receiving information from a user. The information received via the touch screen may be capable of providing the indicated information received from the touch screen as information to the control circuit 1601 for performing functions or control.

Each of the hardware circuits within the device 1600 may be powered by a power source 1606. The power source 1606 may include a power supply configured to receive power from an alternating-current (AC) power supply or direct-current (DC) power supply, for example. In addition, the power source 1606 may comprise one or more batteries. The power source 1606 may produce a supply voltage V_(CC) for powering the hardware within the device 1600.

FIG. 17 is a block diagram illustrating an example load control device 1700. The load control device 1700 may be a lighting control device (e.g., the lighting control device 120), a motorized window treatment (e.g., the motorized window treatments 150), a plug-in load control device (e.g., the plug-in load control device 140), a temperature control device (e.g., the temperature control device 160), a dimmer switch, a speaker (e.g., the speaker 146), an electronic switch, an electronic ballast for lamps, and/or another load control device.

The load control device 1700 may include a control circuit 1701 for controlling the functionality of the load control device 1700. The control circuit 1701 may include one or more general purpose processors, special purpose processors, conventional processors, digital signal processors (DSPs), microprocessors, integrated circuits, a programmable logic device (PLD), application specific integrated circuits (ASICs), or the like. The control circuit 1701 may perform signal coding, data processing, image processing, power control, input/output processing, or any other functionality that enables the load control device 1700 to perform as one of the devices of the load control system (e.g., load control system 100) described herein.

The load control device 1700 may include a load control circuit 1705 that may be electrically coupled in series between a power source 1707 (e.g., an AC power source and/or a DC power source) and an electrical load 1708. The control circuit 1701 may be configured to control the load control circuit 1705 for controlling the electrical load 1708, for example, in response to received instructions. The electrical load 1708 may include a lighting load, a motor load (e.g., for a ceiling fan and/or exhaust fan), an electric motor for controlling a motorized window treatment, a component of a heating, ventilation, and cooling (HVAC) system, a speaker, or any other type of electrical load. The electrical load may 1708 be included in or external to the load control device 1700. For example, the load control device 1700 may be a dimmer switch or an LED driver capable of controlling an external lighting load. The electrical load 1708 may be integral with the load control device 1700, For example, the load control device 1700 may be included in LEDs of a controllable light source, a motor of a motor drive unit, or a speaker in a controllable audio device.

The control circuit 1701 may be communicatively coupled to a memory 1702 to store information in and/or retrieve information from the memory 1702. The memory 1702 may comprise a computer-readable storage media or machine-readable storage media that maintains a device dataset of associated device identifiers, network information, and/or computer-executable instructions for performing as described herein. For example, the memory 182 may comprise computer-executable instructions or machine-readable instructions that include one or more portions of the procedures described herein. The memory 1702 may have stored thereon one or more settings and/or control parameters associated with the device 1700. For example, the memory 1702 may have stored thereon one or more associations between control parameters and respective settings. The settings may be updated as described herein.

The control circuit 1701 may access the instructions from memory 1702 for being executed to cause the control circuit 1701 to operate as described herein, or to operate one or more devices as described herein. The memory 1702 may include a non-removable memory and/or a removable memory. The non-removable memory may include random-access memory (RAM), read-only memory (ROM), a hard disk, or any other type of non-removable memory storage. The removable memory may include a subscriber identity module (SIM) card, a memory stick, a memory card, or any other type of removable memory. The memory 1702 may be implemented as an external integrated circuit (IC) or as an internal circuit of the control circuit 1701.

The load control device 1700 may include one or more communication circuits 1704 that are in communication with the control circuit 1701 for sending and/or receiving information as described herein. The communication circuit 1704 may perform wireless and/or wired communications. The communication circuit 1704 may be a wired communication circuit capable of communicating on a wired communication link. The wired communication link may include an Ethernet communication link, an RS-485 serial communication link, a 0-10 volt analog link, a pulse-width modulated (PWM) control link, a Digital Addressable Lighting Interface (DALI) digital communication link, and/or another wired communication link. The communication circuit 1704 may be configured to communicate via power lines (e.g., the power lines from which the load control device 1700 receives power) using a power line carrier (PLC) communication technique. The communication circuit 1704 may be a wireless communication circuit including one or more RF or IR transmitters, receivers, transceivers, or other communication circuits capable of performing wireless communications.

Though a single communication circuit 1704 may be illustrated, multiple communication circuits may be implemented in the load control device 1700. The load control device 1700 may include a communication circuit configured to communicate via one or more wired and/or wireless communication networks and/or protocols and at least one other communication circuit configured to communicate via one or more other wired and/or wireless communication networks and/or protocols. For example, a first communication circuit may be configured to communicate via a wired or wireless communication link, while another communication circuit may be capable of communicating on another wired or wireless communication link. The first communication circuit may be configured to communicate via a first wireless communication link (e.g., a wireless network communication link) using a first wireless protocol (e.g., a wireless network communication protocol), and the second communication circuit may be configured to communicate via a second wireless communication link (e.g., a short-range or direct wireless communication link) using a second wireless protocol (e.g., a short-range wireless communication protocol).

One of the communication circuits 1704 may comprise a beacon transmitting and/or receiving circuit capable of transmitting and/or receiving beacon messages via a short-range RF signal. A control circuit 1701 may communicate with beacon transmitting circuit (e.g., a short-range communication circuit) to transmit beacon messages. The beacon transmitting circuit may communicate beacon messages via RF communication signals, for example. The beacon transmitting circuit may be a one-way communication circuit (e.g., the beacon transmitting circuit is configured to transmit beacon messages) or a two-way communication circuit capable of receiving information on the same network and/or protocol on which the beacon messages are transmitted (e.g., the beacon transmitting circuit is configured to transmit and receive beacon messages). The information received at the beacon transmitting circuit may be provided to the control circuit 1701.

The control circuit 1701 may be in communication with one or more input circuits 1703 from which inputs may be received. The input circuits 1703 may be included in a user interface for receiving inputs from the user. For example, the input circuits 1703 may include an actuator (e.g., a momentary switch that may be actuated by one or more physical buttons) that may be actuated by a user to communicate user input or selections to the control circuit 1701. In response to an actuation of the actuator, the control circuit 1701 may enter an association mode, transmit association messages from the load control device 1700 via the communication circuits 1704, and/or receive other information. In response to an actuation of the actuator may perform control by controlling the load control circuit 1705 to control the electrical load 1708, and/or by transmitting control instructions indicating the actuation on the user interface and/or the control instructions generated in response to the actuation. The actuator may include a touch sensitive surface, such as a capacitive touch surface, a resistive touch surface an inductive touch surface, a surface acoustic wave (SAW) touch surface, an infrared touch surface, an acoustic pulse touch surface, or another touch sensitive surface that is configured to receive inputs (e.g., touch actuations/inputs), such as point actuations or gestures from a user. The control circuit 1701 of the load control device 1700 may enter the association mode, transmit an association message, control the load control circuit 1705, transmit control instructions, or perform other functionality in response to an actuation or input from the user on the touch sensitive surface.

The input circuits 1703 may include a sensing circuit (e.g., a sensor). The sensing circuit may be an occupant sensing circuit, a temperature sensing circuit, a color (e.g., color temperature) sensing circuit, a visible light sensing circuit (e.g., a camera), a daylight sensing circuit or ambient light sensing circuit, or another sensing circuit for receiving input (e.g., sensing an environmental characteristic in the environment of the load control device 1700). The control circuit 1701 may receive information from the one or more input circuits 1703 and process the information for performing functions as described herein.

The control circuit 1701 may illuminate a light sources 1706 (e.g., LEDs) to provide feedback to a user. The control circuit 1701 may be operable to illuminate the light sources 1706 different colors. The light sources 1706 may be illuminated by, for example, one or more light-emitting diodes (LEDs).

Although features and elements are described herein in particular combinations, each feature or element can be used alone or in any combination with the other features and elements. For example, the functionality described herein may be described as being performed by a control device, such as a remote control device or a lighting device, but may be similarly performed by a hub device or a network device. The methods described herein may be implemented in a computer program, software, or firmware incorporated in a computer-readable medium for execution by a computer or processor. Examples of computer-readable media include electronic signals (transmitted over wired or wireless connections) and computer-readable storage media. Examples of computer-readable storage media include, but are not limited to, a read only memory (ROM), a random access memory (RAM), removable disks, and optical media such as CD-ROM disks, and digital versatile disks (DVDs).

While the methods described herein are described with reference to controlling motorized window treatments (e.g., the motorized window treatments 150 and/or the motorized roller shade 220) for preventing glare conditions, the methods may be used to control other types of control devices to prevent and/or alleviate glare conditions. For example, the methods described herein could be used to control the transmittance of controllable electrochromic glass and/or to adjust the positions of indoor or outdoor controllable louvers to prevent and/or alleviate glare conditions. 

What is claimed is:
 1. An apparatus for detecting a location of a glare condition and for controlling a position of a motorized window treatment, the system controller comprising: a control circuit configured to: determine a desired position based on an indication of a location of a glare condition in an image; determine a difference between the desired position and a present position; compare the difference to at least one of a first threshold and a second threshold; and transmit control instructions for controlling the position of the motorized window treatment to the desired position if the difference is greater than or equal to the first threshold or less than or equal to the second threshold; wherein the first threshold is a raise threshold, the second threshold is a lower threshold, and wherein the control instructions are configured to instruct the motorized window treatment to raise the position if the difference is greater than or equal to the first threshold or to lower the position if the difference is less than or equal to the second threshold.
 2. The apparatus of claim 1, further comprising a communication circuit, wherein the control circuit is configured to transmit the control instructions via the communication circuit.
 3. The apparatus of claim 1, wherein the control instructions are configured to instruct the motorized window treatment to adjust the position to match the desired position.
 4. The apparatus of claim 1, wherein the control circuit being configured to determine the desired position comprises the control circuit being configured to: process at least one image at a plurality of resolutions, determine if a glare condition exists in the at least one image at each of the plurality of resolutions, wherein the glare condition at each of the plurality of resolutions is determined when a luminance value of a pixel in the at least one image exceeds a respective glare condition threshold for the resolution, and determine the desired position to be a position corresponding to a location of the glare condition detected at one of the plurality of resolutions.
 5. A method of detecting a location of a glare condition and for controlling a position of a motorized window treatment, the method comprising: determining a desired position based on an indication of a location of a glare condition in an image; determining a difference between the desired position and a present position; comparing the difference to at least one of a first threshold and a second threshold; and transmitting control instructions for controlling the position of the motorized window treatment to the desired position if the difference is greater than or equal to the first threshold or less than or equal to the second threshold; wherein the first threshold is a raise threshold, the second threshold is a lower threshold, and wherein the control instructions are configured to instruct the motorized window treatment to raise the position if the difference is greater than or equal to the first threshold or to lower the position if the difference is less than or equal to the second threshold.
 6. The method of claim 5, wherein the control instructions are configured to instruct the motorized window treatment to adjust the position to match the desired position.
 7. The method of claim 5, wherein determining the desired position comprises: processing at least one image at a plurality of resolutions, determining if a glare condition exists in the at least one image at each of the plurality of resolutions, wherein the glare condition at each of the plurality of resolutions is determined when a luminance value of a pixel in the at least one image exceeds a respective glare condition threshold for the resolution, and determining the desired position to be a position corresponding to a location of the glare condition detected at one of the plurality of resolutions.
 8. An apparatus for detecting a location of a glare condition and for controlling a position of a motorized window treatment, the apparatus comprising: a control circuit configured to: determine a desired position based on an indication of a location of a glare condition in an image; determine that the desired position is higher than a present position; determine that a raise timeout period has occurred since the last adjustment of the position of the motorized window treatment; and upon the determination that the raise timeout period has occurred since the last adjustment of the position of the motorized window treatment, transmit control instructions for controlling the position of the motorized window treatment to the desired position.
 9. The apparatus of claim 8, wherein the control instructions are configured to instruct the motorized window treatment to raise the position to match the desired position.
 10. The apparatus of claim 8, wherein the apparatus further comprises a timer, and wherein the timer is configured to be started following a previous determination of a desired shade position.
 11. The apparatus of claim 10, wherein after the control instructions are transmitted for controlling the position, the control circuit is further configured to: reset the timer; and restart the timer.
 12. The apparatus of claim 8, wherein the control circuit is further configured to: determine a second desired position; determine that the second desired position is lower than a second present position; and transmit control instructions for controlling the position of the motorized window treatment.
 13. The apparatus of claim 12, wherein the control instructions are configured to instruct the motorized window treatment to lower the position to match the second desired position.
 14. The apparatus of claim 12, wherein the apparatus further comprises a timer, and wherein the control circuit is further configured to: reset the timer; and restart the timer.
 15. The apparatus of claim 8, wherein the image comprises a plurality of pixels, and wherein the control circuit being configured to determine the desired position comprises the control circuit being configured to: determine that a luminance value of a pixel in the image exceeds a glare condition threshold; determine a location of the pixel; determine a profile angle based on the location of the pixel; and determine the desired position based on the profile angle.
 16. The apparatus of claim 8, wherein the image comprises a plurality of pixels, and wherein control circuit being configured to determine the desired position comprises the control circuit being configured to: determine an illuminance value for a pixel in the image; add the illuminance value for the pixel to a cumulative illuminance value for the image; determine that the cumulative illuminance value exceeds a glare condition threshold; determine a location of the pixel; determine a profile angle based on the location of the pixel; and determine the desired position based on the profile angle.
 17. An apparatus for detecting a location of a glare condition and for controlling a position of a motorized window treatment, the apparatus comprising: a control circuit configured to: determine a desired position based on an indication of a location of a glare condition in an image; determine whether the desired position is higher than a present position; determine that a raise timer has started, wherein the raise timer is configured to reduce a number of adjustments made to the position by decreasing a frequency at which the position is adjusted; determine whether the raise timer has expired; and after the raise timer is determined to have expired, transmit control instructions for controlling the position of the motorized window treatment to the desired position.
 18. The apparatus of claim 17, wherein the control circuit is further configured to: determine a vacancy condition of an area in which the motorized window treatment is located; and transmit the control instructions.
 19. The apparatus of claim 18, further comprising a communication circuit, wherein the control circuit is configured to determine the vacancy condition based on one or more messages received from an occupancy sensor via the communication circuit.
 20. The apparatus of claim 17, wherein the control circuit is further configured to: determine that the raise timer has not started; and start the raise timer while maintaining the present position.
 21. The apparatus of claim 17, wherein the control circuit is further configured to: determine that the desired position is not higher than the present position; and transmit second control instructions for controlling the position of the motorized window treatment to the desired position.
 22. The apparatus of claim 21, wherein the control circuit is configured to transmit the second control instructions without starting the raise timer. 